2013-05-13 137 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