将 T01D163DE49AED860 转换为日期时间?

Convert T01D163DE49AED860 to a datetime?

在注册表的 Word MRU 列表中,日期时间似乎存储为 T01D163DE49AED860

知道如何将其转换为日期时间吗?

这是一个十六进制注册表值。密钥位于此处:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsBackup\Status

Dim regTime As Long = CLng(Registry.LocalMachine.OpenSubKey( _
    "SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsBackup\Status").GetValue( _
    "LastSuccess"))
Dim dt As DateTime = DateTime.FromFileTimeUtc(regTime)
Me.Text = dt.ToLocalTime.ToString

我假设你已经读过 T01D163DE49AED860 作为 stringRegistry.GetValue method 之类的东西,看起来第一个 T 字符指向这是一个时间值并且其余部分是十六进制值,您可以先将其解析为 long

删除字符串的第一个 T 字符,用 AllowHexSpecifier style and use FromFileTimeUtc method 将其解析为 long 以获得 DateTime.

var s = "T01D163DE49AED860";
s = s.Remove(0, 1);
long long1 = long.Parse(s, NumberStyles.AllowHexSpecifier);
var dt = DateTime.FromFileTimeUtc(long1);

但是这个 returns 10.02.2016 08:37:34,如果你现在的时区是 UTC +01:00,你可以使用 ToLocalTime 得到 10.02.2016 09:37:34 like;

var dt = DateTime.FromFileTimeUtc(long1).ToLocalTime();