我有一个字符串如何解析日期时间sec.ms
1368352924.281610000
呈现DateTime
。
我该如何解析?
是炼
string rststr = Convert.ToString(result);
string[] rststrarr = rststr.Split('.');
DateTime.Parse(rststrarr[0]);
编辑 很抱歉的混乱。它指出,这是一个高分率的unix时间戳。 亲切的问候。
我有一个字符串如何解析日期时间sec.ms
1368352924.281610000
呈现DateTime
。
我该如何解析?
是炼
string rststr = Convert.ToString(result);
string[] rststrarr = rststr.Split('.');
DateTime.Parse(rststrarr[0]);
编辑 很抱歉的混乱。它指出,这是一个高分率的unix时间戳。 亲切的问候。
这可能是因为这个数字代表自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
+1它是Unix时代,小数点是分辨率很高的一秒 – jgauffin 2013-05-13 21:13:13
我会偏好'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
@MattJohnson。这并不反映你的答案:问题是如何解析毫秒。虽然这个具体的例子可能在unix时代已经有几分钟了 - 值得指出的是,即使这是一个危险的假设,但并不确定(例如,这可能会是一年)。在问题中没有足够的信息来断定。 – 2013-05-14 13:15:38
您需要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)
'DateTime.MinValue + ts'也应该工作 – 2013-05-13 12:07:55
@WouterHuysentruit。它的确如此,DateTime.MinValue.AddMilliseconds(d)也是如此;' - 有很多选项可供选择! – 2013-05-13 12:10:58
我同意,意图是全部 - 答案更新,以强调选项 – 2013-05-13 12:14:24
应你的价值代表什么日期?你知道超越“它代表日期/时间”的任何细节吗?你知道你如何从特定的日期值到这个字符串吗? – 2013-05-13 12:12:59
基准日期/时间是什么?什么DateTime值为0.0代表? – 2013-05-13 12:16:54
@MthetheWWatson。使用术语“基准”而不是我的“参考日期”是好的和正确的。 – 2013-05-13 12:24:18