2013-06-27 33 views
1

例如今天20:30會有一些活動。那天早些時候我們賣了票。門票只能在同一天退回。如何指定某些DateTime值是否在C#中的同一天?

有人今天想要退票,不管它是在事件發生之前還是之後,但它應該在那一天。

如何指定某些DateTime值是否在C#中的同一天?

+0

http://msdn.microsoft.com/en-us/library/system.datetime.date.aspx – steveg89

+0

你試過了什麼代碼?請告訴我們,以便我們幫助。 – Bit

+3

您是否需要考慮在多個時區出售的門票在「日」窗口內? –

回答

2

MSDN docu of DateTime

DateTime date1 = new DateTime(2013, 6, 27, 7, 47, 0); 
// Get date-only portion of date, without its time. 
DateTime dateOnly = date1.Date; 

if (Date1.Date == Date2.Date) 
{ //lucky Day} 
else 
{ // loser 
} 

但是,如果你建立一個新的工具。 使用DATETIMEOFFSET

看到現在和今天特性

+0

這是什麼意思「但是,如果你建立一個新的工具,使用DateTimeOffSet」? – tesicg

+0

DateTime本質上很弱。因爲你不知道它所指的時區。如果你有機會只使用DateTimeoffset。這樣你總是知道時間,你可以在任何時區顯示它。這樣服務器可以有一個基地/本地時間。用戶可以有一個當地時間,並且從來沒有一個模棱兩可的解釋。即使DB,例如SQL可以存儲DATETIMEOFFSET。 –

+0

哦,順便說一下,我注意到,自己的刻度線(c#時間大師)發了帖子。看看他的NodaTime工具http://code.google。com/p/noda-time /如果你對在.net中管理時間非常認真。 –

7

喜歡的東西:

if (ticket.Date == now.Date) // For some value of now 

或許:

if (ticket.Date == DateTime.Today) 

?您需要考慮時區是否也可能導致您遇到問題...您需要注意DateTime has some significant ambiguities - 很容易避免考慮您應該真正關注的事情,特別是在您所在的時區

編輯:正如評論中指出的那樣,你確實可以使用Noda Time,此時你想比較LocalDate值 - 再次,你仍然需要考慮哪個時區是相關的。

+2

他可以試試我聽到一些聰明人寫的真棒新NodeTime庫。 :) –

-1

您必須比較每個DateTime的屬性。

例如:

DateTime date1 = new DateTime(2013, 01, 01, 01, 00, 00); // Jan 1th, 2013 - 01:00 AM 
DateTime date2 = new DateTime(2013, 01, 01, 02, 00, 00); // Jan 1th, 2013 - 02:00 AM 

if (date1.Day == date2.Day && date1.Month == date2.Month && date1.Year == date2.Year) 
{ 
    // Your code here. 
} 
+2

比較只有一天可能是上個月,去年等。這應該更具體。 –

+1

2013年1月1日和5月1日1647年不是同一天 –

1

工作?

1

你可以做到這一點(與一些需要檢查的情況下,如果添加事件的時間)。

if ((DateVariable.Date == DateTime.Today) && (DateTime.Now.TimeOfDay < new TimeSpan(20,30,0))) 
{ 
    //your work here.... 
} 
相關問題