如何将Windows 64位时间戳转换为日期时间?
问题描述:
我需要将窗口十六进制64位(大端)日期时间转换为C#中可读的内容?如何将Windows 64位时间戳转换为日期时间?
例如'01cb17701e9c885a'
转换为"Tue, 29 June 2010 09:47:42 UTC"
任何帮助,将不胜感激。
答
看起来你需要分析这long
为十六进制,并使用FromFileTime
生成Windows文件时间作为本地和使用ToUniversalTime
生成UTC等价的。
long number = long.Parse("01cb17701e9c885a", NumberStyles.AllowHexSpecifier);
DateTime date = DateTime.FromFileTime(number).ToUniversalTime(); // 06/29/2010 09:47:42
或更简单,使用FromFileTimeUtc
作为马特提到;
DateTime date = DateTime.FromFileTimeUtc(number); // 06/29/2010 09:47:42
如果你想获得它作为一个字符串表示,你可以使用ToString
方法是实例与DateTime
英语为主文化(如InvariantCulture
)的;
string str = date.ToString("ddd, dd MMMM yyyy HH:mm:ss 'UTC'",
CultureInfo.InvariantCulture);
+1
'FromFileTimeUtc'更容易,更直接。 :) –
+1
@MattJohnson当然,谢谢:)更新。 –
大端日期时间代表什么?从时代开始它是毫秒吗? –
例如,02800008FFFFFFFF(字符串)是Windows 64位时间戳结构,我想将其更改为datetime ex)2015-11-08 –