2011-05-27 28 views
31

我想將日期存儲爲表格中的數字。我知道該怎麼做,但我不知道該怎麼回去。我怎樣才能將一個長變量投射到ToDateTime。將DateTime轉換爲long值,也是相反的方法

DateTime now = DateTime.Now; 
long t = now.ToFileTime(); 
DateTime today = t.ToDateTime; // I am looking for something like this line. This Method does not exist 

我知道有很多方法將DateTime轉換爲long。我不介意使用哪種技術。我只想有一種方法可以來回轉換。

+1

未來請考慮加入你的問題**爲什麼**你需要做點什麼。你爲什麼「想把日期存儲爲數字」?大多數數據庫都可以將日期存儲爲日期;數據庫有什麼特別之處嗎?關於你的數據?這些信息可能會影響日期和數字之間的轉換方式最適合您。 – 2012-11-13 20:07:22

+4

@DourHighArch:我不同意。這個問題已經明確說明,意圖是清楚的。 「有一個'DateTime',如何將其可逆地轉換爲'long'?」這個問題可以並且值得回答。我正好有這個問題,並且在OP中得到了答案。沒有什麼比答案更令人沮喪的了:「你爲什麼要這麼做?數據庫可以存儲日期和時間。」問題得不到解答。 – 2016-05-18 09:24:04

回答

8

從長爲DateTime:new DateTime(long ticks)

從日期時間長:DateTime.Ticks

5

由於您使用ToFileTime,你需要使用FromFileTime走另一條路。但note

通常,FromFileTime方法 恢復,這是 由ToFileTime方法保存的日期時間值。如果日期時間值的序列化和反序列化發生在不同的時區

: 然而,這兩個值可以不同 在下列條件下。例如,對於 示例,如果Datetime值的 時間爲12:30 P.M.在美國東部 時區被序列化,然後 在美國太平洋時間 區域反序列化,原始值爲12:30 P.M.上午9點30分調整爲 。以反映 兩次 區域之間的差異。

如果序列化的DateTime值代表本地時區中的無效時間 。在這種情況下,ToFileTime方法 將調整 恢復的DateTime值,以便它 代表本地 時區中的有效時間。

如果你不關心哪一個DateTime的long表示存儲,您可以使用Ticks如其他人所說(蜱可能是最好,根據您的要求,因爲由ToFileTime返回的值似乎在Windows文件系統API的上下文中)。

3

有幾種可能(注意,那些長期值不一樣的Unix紀元。

對於示例(扭轉ToFileTime())只使用DateTime.FromFileTime(t)

0

有一個DateTime構造這需要很長時間。

DateTime today = new DateTime(t); // where t represents long format of dateTime