C # лучший способ сравнить два времени суток - PullRequest
11 голосов
/ 11 сентября 2009

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

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

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

Как дела?

Ответы [ 2 ]

24 голосов
/ 11 сентября 2009

Как насчет:

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

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

Жаль, что нет

DateTime.CurrentTime

или

TimeSpan.CurrentTime

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

У меня есть набор методов расширения на int в MiscUtil , которые могли бы сделать инициализацию _whenTimeIsOver аккуратнее - вы бы использовали:

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

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

14 голосов
/ 11 сентября 2009
if (DateTime.Now.TimeOfDay > _whenTimeIsOver)
    ....
...