2009-09-11 41 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),但很可惜,沒有...

intMiscUtil有一套擴展方法,這將使_whenTimeIsOver neater的初始化 - 你會使用方法:

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

這不是每個人的口味,但我喜歡它......

+0

好吧,我們不能比較DateTime和TimeSpan對象,我錯了。我喜歡初始化。 – Toto 2009-09-11 14:25:43

+2

@Duaner:你沒有比較'DateTime'和'TimeSpan' - 你在比較兩個'TimeSpans'。 'TimeOfDay'屬性返回'TimeSpan'。 – 2009-09-11 14:28:05

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

+1是第一個。 – Vadim 2009-09-11 14:17:11

+4

+1以某種方式比Jon更快 – 2009-09-11 14:27:40

+0

我速度更快,但我的初步答案包含一個小錯誤:) – 2009-09-11 14:28:35

相關問題