2010-06-26 34 views

回答

7

即不能被表示爲一個整數,它會溢出。但是,這可能會很長。

DateTime dateTime = new DateTime(2010, 6, 26, 14, 44, 07); 
long time = long.Parse(dateTime.ToString("yyyyMMddHHmmss")); 

然而,這將是更直觀簡單表達它作爲一個字符串,但我不知道你打算用這些信息做什麼。

編輯:

既然你已經更新了這個問題,答案是簡單的。

string time = dateTime.ToString("yyyyMMddHHmmss"); 
+0

感謝提示響應:) – 001 2010-06-26 04:27:23

0

32位整數不足以將DateTime值保留爲非常精確的分辨率。 Ticks屬性很長(Int64)。如果你並不需要精確到蜱級別,你可以得到類似秒鐘從紀元:

TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1)); 
int dateAsInteger = (int)t.TotalSeconds; 

它通常是一個壞主意,使用數字數據類型來存儲一個數字,你不能做算術上。例如。在你的例子中的數字沒有數字含義或值,添加它或減去它是毫無意義的。但是,自特定日期以來的秒數是,它可用作數字數據類型。

+0

從他的樣品,它看起來像他只是想要將實際日期表示爲以年,月,日等開始的數字。 – 2010-06-26 04:12:36

+0

他沒有要求秒數,請再次閱讀問題 – 2010-06-26 04:13:17

+0

@Srin:原始問題中的示例確實顯示秒數。 – 2010-06-26 04:19:00

0

注意:這是在問題改爲「字符串值」而不是「整數值」之前發佈的。

從本質上講,你要沿着所需的各部分名額轉移號碼,然後將其添加:

var x = new DateTime(2010,06,26,14,47,07); 

long i = x.Year; 
i = i * 100 + x.Month; 
i = i * 100 + x.Day; 
i = i * 100 + x.Hour; 
i = i * 100 + x.Minute; 
i = i * 100 + x.Second; 

Console.WriteLine(i); // 20100626144707 
相關問題