如何将Windows 64位时间戳转换为日期时间?

问题描述:

我需要将窗口十六进制64位(大端)日期时间转换为C#中可读的内容?如何将Windows 64位时间戳转换为日期时间?

例如'01cb17701e9c885a'

转换为"Tue, 29 June 2010 09:47:42 UTC"

任何帮助,将不胜感激。

+0

大端日期时间代表什么?从时代开始它是毫秒吗? –

+0

例如,02800008FFFFFFFF(字符串)是Windows 64位时间戳结构,我想将其更改为datetime ex)2015-11-08 –

使用DateTime.FromFileTimeUtc
对于细节,请访问:this site

看起来你需要分析这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当然,谢谢:)更新。 –