C#最好的方式来比较一天中的两个时间

Tot*_*oto 11 c# datetime timespan

我想知道当天的指定时间是否过去了.我真的不喜欢我的方式:

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

internal static bool IsTimeOver()
{
    return DateTime.Now.TimeOfDay.Subtract(_whenTimeIsOver ).Ticks > 0; 
}
Run Code Online (Sandbox Code Playgroud)

你好吗?

Jon*_*eet 24

怎么样:

internal static bool IsTimeOver()
{
    return DateTime.Now.TimeOfDay > _whenTimeIsOver;
}
Run Code Online (Sandbox Code Playgroud)

运算符重载对于日期和时间工作非常有用:)您可能还需要考虑将其设置为属性而不是方法.

遗憾的是,没有一个

DateTime.CurrentTime
Run Code Online (Sandbox Code Playgroud)

要么

TimeSpan.CurrentTime
Run Code Online (Sandbox Code Playgroud)

避免DateTime.Now.TimeOfDay(就像有DateTime.Today)但唉,没有......

intMiscUtil中有一组扩展方法,可以对neater进行初始化_whenTimeIsOver- 你可以使用:

private static readonly TimeSpan _whenTimeIsOver = 16.Hours() + 25.Minutes();
Run Code Online (Sandbox Code Playgroud)

这不是每个人的口味,但我喜欢它...

  • @Duaner:你不是在比较'DateTime`和'TimeSpan` - 你在比较两个'TimeSpans`.`TimeOfDay`属性返回`TimeSpan`. (2认同)

Phi*_*ert 14

if (DateTime.Now.TimeOfDay > _whenTimeIsOver)
    ....
Run Code Online (Sandbox Code Playgroud)