2013-05-13 71 views
2

我有一個字符串如何解析日期時間sec.ms

1368352924.281610000 

呈現DateTime

我該如何解析?

是煉

string rststr = Convert.ToString(result);      
string[] rststrarr = rststr.Split('.'); 
DateTime.Parse(rststrarr[0]); 

編輯 很抱歉的混亂。它指出,這是一個高分率的unix時間戳。 親切的問候。

+0

應你的價值代表什麼日期?你知道超越「它代表日期/時間」的任何細節嗎?你知道你如何從特定的日期值到這個字符串嗎? – 2013-05-13 12:12:59

+1

基準日期/時間是什麼?什麼DateTime值爲0.0代表? – 2013-05-13 12:16:54

+0

@MthetheWWatson。使用術語「基準」而不是我的「參考日期」是好的和正確的。 – 2013-05-13 12:24:18

回答

3

這可能是因爲這個數字代表自1月1日經過的秒數, 1970年UTC。這是「Unix Epoch」值,在很多系統和日期格式中都很常見。

假設我對你的價值類型正確的,那麼你就可以做到以下幾點:

// you said you were starting with a string 
string s = "1368352924.281610000"; 

// but you are going to need it as a double. 
// (If it's already a double, skip these two steps) 
var d = double.Parse(s); 

// starting at the unix epoch 
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 

// simply add the number of seconds that you have 
DateTime dt = epoch.AddSeconds(d); 


Debug.WriteLine("{0} {1}", dt, dt.Kind); // prints 05/12/2013 10:02:04 Utc 
+2

+1它是Unix時代,小數點是分辨率很高的一秒 – jgauffin 2013-05-13 21:13:13

+2

我會偏好'double.Parse'或'double.TryParse'而不是'Convert.ToDouble'(參見[Double.TryParse或轉換。ToDouble - 這是更快,更安全?](http://stackoverflow.com/questions/586436/double-tryparse-or-convert-todouble-which-is-faster-and-safer)) – 2013-05-14 13:12:08

+0

@MattJohnson。這並不反映你的答案:問題是如何解析毫秒。雖然這個具體的例子可能在unix時代已經有幾分鐘了 - 值得指出的是,即使這是一個危險的假設,但並不確定(例如,這可能會是一年)。在問題中沒有足夠的信息來斷定。 – 2013-05-14 13:15:38

3

您需要TimeSpan.FromMilliseconds,然後將其添加到您的毫秒值引用的參考時間。

例如(編輯2:假設你的參考日期是DateTime.MinValue)

double d = double.Parse("1368352924.281610000"); 
TimeSpan ts = TimeSpan.FromMilliseconds(d); 
DateTime dt = DateTime.MinValue.Add(ts); 

編輯有很多方法對皮膚這一點,因爲沃特Huysentruit指出。你應該選擇強調的意圖爲您的方案如一個:

DateTime dt = DateTime.MinValue.Add(ts); 
dt = DateTime.MinValue + ts; 
dt = dateTime.MinValue.AddMilliseconds(d); 
dt = DateTime.FromOADate(d); 

(對於後者,見FromOADate

+0

'DateTime.MinValue + ts'也應該工作 – 2013-05-13 12:07:55

+0

@WouterHuysentruit。它的確如此,DateTime.MinValue.AddMilliseconds(d)也是如此;' - 有很多選項可供選擇! – 2013-05-13 12:10:58

+0

我同意,意圖是全部 - 答案更新,以強調選項 – 2013-05-13 12:14:24