将datetime ticks(String.Format(" {0:D19}",DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks)转换为datetime

时间:2016-03-17 08:24:42

标签: c# .net datetime azure azure-table-storage

我以日期时间刻度格式存储Azure表存储rowkey

String.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks);

我想转换回日期时间。

2 个答案:

答案 0 :(得分:6)

如果你这样做:

string str = String.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks);

然后我们有了

// str = max - now

那么

// now = max - str

所以

DateTime now = new DateTime(DateTime.MaxValue.Ticks - long.Parse(str), DateTimeKind.Utc);

答案 1 :(得分:0)

您的代码在我的时区返回2519440974768899656,现在是UTC +02:00,您可以将此字符串解析为long,并可以在DateTime(long)构造函数中使用。

var s = String.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks).Dump();
long l = long.Parse(s);
(new DateTime(l)).Dump();

返回

16.10.7984 15:31:16

但老实说,根据你所做的事情,我 非常确定这是你想要的价值。