将日期时间刻度 (String.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks) 转换为日期时间

Convert datetime ticks(String.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks) to datetime

我正在存储 Azure table 日期时间刻度格式的存储行键

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

我想转换回日期时间。

如果你正在做:

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);

你的代码 returns 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();

Returns

16.10.7984 15:31:16

但老实说,根据您的操作,我很确定这就是您想要的值。