2013-06-06 2 views
-1

Я хочу сравнить с датами, как:C# DateTime вычитание часов из DateTime в переменной

У меня есть переменная DateTime, и я хочу сравнить, если время этого переменный меньше фактическое времени ...

например:

Datetime DateT = new DateTime.Now; 

    string Myvariable = "13:00:36"; 
+2

Я хочу, чтобы выпить чашечку кофе ... Пожалуйста, прочтите [FAQ] первым. – David

+0

Yummm ... кофе! @Marco, вам нужно будет преобразовать вашу строковую переменную в DateTime, используя один из различных распространенных методов (Google it), а затем выполнить сравнение ... –

+0

Но, как я могу сравнить VAriable в дате, подобном этому? 2013 -06-03 13:00:36 "с другой переменной времени с" 13:00:36 "?? –

ответ

1

Вы можете использовать DateTime.TryParseExact Method и DateTime.TimeOfDay Property ниже

string value = "13:00:36"; 
DateTime dt; 
if (DateTime.TryParseExact(value, "HH:mm:ss", CultureInfo.InvariantCulture, 
         DateTimeStyles.None, out dt)) 
{ 
    if (dt.TimeOfDay > DateTime.Now.TimeOfDay) 
    { 
     // greater than actual time 
    } 
    else 
    { 
     // smaller than actual time 
    } 
} 

Поскольку у вас есть время в формате строки, трудно сравнивать. Что вы можете сделать, это преобразовать его в Datetime, указав правильную строку формата. Теперь у вас есть два объекта DateTime, и вы можете получить время из этих объектов по TimeOfDay собственности и сравнить ..

0

вы пробовали использовать переменную DateTime вместо этого? Что-то вроде этого:

DateTime date1 = new DateTime(2013, 1, 1, 13, 00, 36); 
DateTime dateNow = new DateTime.Now; 

Console.WriteLine(date1.ToString("T", CultureInfo.CreateSpecificCulture("es-ES"))); 
// Outputs 6:30:00 
Console.WriteLine(date1.ToString("U", CultureInfo.CreateSpecificCulture("en-US"))); 
// Outputs Tuesday, January 1, 2013 13:00:36 PM 
Console.WriteLine(dateNow.ToString()); 
// Outputs the current date/time 

Тогда вы можете создать еще DateTime и сравнить их DateTime переменной, а не строки, хотя вы можете выводить значения как строки, используя функцию date1.ToString().

Более подробная информация об этом здесь: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx

Надеется, что это помогает.

+0

Не важно, есть более эффективные решения выше. Я думал о чем-то другом. – Gunnar

0

Используйте следующий код, чтобы получить временную строку как экземпляр DateTime:

DateTime DateT = new DateTime.Now; 

string Myvariable = "13:00:36"; 

DateTime parsedTime = DateTime.ParseExact(
    Myvariable, 
    "HH:mm:ss", 
    CultureInfo.InvariantCulture); 

parsedTime будет иметь компоненты времени (Час, Минута, Второе), как указано в строковой переменной, , но это будет другая дата. Компоненты Год, Месяц и День не присутствуют в строке, поэтому они будут иметь значение по умолчанию DateTime.MinValue.Date. Для того, чтобы правильно сравнить, вам нужно сравнить только временные части:

bool isParsedGreater = parsedTime.Hours > DateT.Hours 
    && parsedTime.Minutes > DateT.Minutes 
    && parsedTime.Seconds > DateT.Seconds; 
Смежные вопросы