2009-09-11 5 views
11

Мне нравится знать, прошло ли заданное время суток. Мне не нравится, как я это делаю:C# лучший способ сравнить два раза в день

private static readonly TimeSpan _whenTimeIsOver = new TimeSpan(16,25,00); 

internal static bool IsTimeOver() 
{ 
    return DateTime.Now.TimeOfDay.Subtract(_whenTimeIsOver).Ticks > 0; 
} 

Как вы поживаете?

ответ

24

Как насчет:

internal static bool IsTimeOver() 
{ 
    return DateTime.Now.TimeOfDay > _whenTimeIsOver; 
} 

Перегрузка операторов очень полезно для даты и времени работы :) Вы могли бы также рассмотреть вопрос о внесении его свойство, а не метод.

Это небольшая Жаль, что там не

DateTime.CurrentTime 

или

TimeSpan.CurrentTime 

избежать DateTime.Now.TimeOfDay (так же, как есть DateTime.Today), но, увы, нет ...

I имеют набор методов расширения на int в MiscUtil, который сделал бы инициализацию _whenTimeIsOver neater - вы бы Применение:

private static readonly TimeSpan _whenTimeIsOver = 16.Hours() + 25.Minutes(); 

Это не все вкусы, но мне это нравится ...

+0

Хорошо, мы не можем сравнивать объект DateTime и TimeSpan, я был неправ. Мне нравится инициация. – Toto

+2

@ Duaner: Вы не сравниваете 'DateTime' с' TimeSpan' - вы сравниваете два 'TimeSpans'. Свойство 'TimeOfDay' возвращает' TimeSpan'. –

14
if (DateTime.Now.TimeOfDay > _whenTimeIsOver) 
    .... 
+0

+1 за то, что первый. – Vadim

+4

+1 для того, чтобы как-то быть быстрее, чем Jon –

+0

Я был быстрее, но мой первоначальный ответ содержал небольшую ошибку :) –