2011-09-28 47 views
0

所以我有一種情況,我需要在特定的日子裏觸發某些事件,我想我會用TimeSpan來獲得那個特定的日子,這裏的想法是當TimeSpan.Days == 0我觸發我的事件,如果它小於或大於0然後什麼都不做... 但我認爲這會工作,但兩天給我0 這就是我在做什麼。C#TimeSpan兩天等於同一時間跨度?

TimeSpan timeSpanDays = DateTime.Parse("12/13/2011").Subtract(DateTime.Now.AddDays(76)); 
TimeSpan timeSpanDays1 = DateTime.Parse("12/14/2011").Subtract(DateTime.Now.AddDays(76)); 

TimeSpan timeSpanMonths = DateTime.Parse("2011-11-28").Subtract(DateTime.Now.AddMonths(2)); 
TimeSpan timeSpanMonths1 = DateTime.Parse("2011-11-29").Subtract(DateTime.Now.AddMonths(2)); 

Console.WriteLine("14 days after issuance: {0}",timeSpanDays.Days); 
Console.WriteLine("14 days after issuance: {0}",timeSpanDays1.Days); 
Console.WriteLine("\r\n"); 
Console.WriteLine("22 months after issuance: {0}",timeSpanMonths.Days); 
Console.WriteLine("22 months after issuance: {0}",timeSpanMonths1.Days); 
Console.WriteLine("\r\n"); 
Console.WriteLine("TESTING DATE {0}",DateTime.Now.AddMonths(2)); 

這裏的結果發佈後

14天:發行後0

14天:發行後0

22個月:0

22個月後發行:0

測試日期2011年11月28日上午10:55:43

這是因爲我沒有剝離DateTime.Now? 任何幫助或指針將不勝感激。

謝謝!

+0

LOL ...累...把它改爲今天而不是現在是時候了。 凌晨失敗 – Josh

回答

2

您誤會了我認爲Days屬性。我想你想要的是TotalDays

+0

同意我錯過了解Days屬性,直到我的大腦開始工作:P,然後將我的DateTime.Now更改爲DateTime.Today,長話短說我使用Days返回一個整數,TotalDays返回整個和分數天即(1或0.418441473829861),我只需要整個數字,因此當它等於0時,我觸發事件,感謝所有人的回覆! – Josh

1

如果您希望在兩個日期時間之間的總天數您需要使用TimeSpan的TotalDays

TotalDays,TotalMinutes,TotalHours,TotalMilliseconds爲您提供時間跨度之間的總時間。

另一方面,日,分,小時和毫秒爲您提供實例的當前組件。

所以,你需要改變你的例子使用Total方法。

TimeSpan timeSpanDays = DateTime.Parse("12/13/2011").Subtract(DateTime.Now.AddDays(76)); 
TimeSpan timeSpanDays1 = DateTime.Parse("12/14/2011").Subtract(DateTime.Now.AddDays(76)); 

TimeSpan timeSpanMonths = DateTime.Parse("2011-11-28").Subtract(DateTime.Now.AddMonths(2)); 
TimeSpan timeSpanMonths1 = DateTime.Parse("2011-11-29").Subtract(DateTime.Now.AddMonths(2)); 

Console.WriteLine("14 days after issuance: {0}",timeSpanDays.TotalDays); 
Console.WriteLine("14 days after issuance: {0}",timeSpanDays1.TotalDays); 
Console.WriteLine("\r\n"); 
Console.WriteLine("22 months after issuance: {0}",timeSpanMonths.TotalDays); 
Console.WriteLine("22 months after issuance: {0}",timeSpanMonths1.TotalDays); 
Console.WriteLine("\r\n"); 
Console.WriteLine("TESTING DATE {0}",DateTime.Now.AddMonths(2)); 
+0

你是對的,但不是因爲我需要看到上面的評論。 – Josh

+0

爲什麼不在0以下時觸發......我不明白你上面的評論。如果不到24小時,TotalDays可能只是一小部分。如果你需要做一些特殊的事情,如果不是1天,只要做一個IF聲明? –

+0

bool isValid = false; TimeSpan timeSpan = dateTime.Subtract(executionDate.Date.AddDays(numberOfDays)); if(timeSpan.Days == 0) { isValid = true; } return isValid; 這是一個輔助方法,這是我每天運行的計劃過程,所以如果它的任何內容都返回false,則返回false。 因此,天是我需要的,而不是總天數,我想我可以使用totalDays,但我不需要分數天。 – Josh