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

时间:2015-11-07 19:16:20

标签: c# datetime timestamp

我需要将Windows十六进制64位(大端)日期时间转换为c#中可读的内容吗?

示例'01cb17701e9c885a'

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

看起来您需要将此解析为long十六进制,并使用FromFileTime生成一个本地的Windows文件时间,并使用ToUniversalTime生成UTC等效项。

long number = long.Parse("01cb17701e9c885a", NumberStyles.AllowHexSpecifier);
DateTime date = DateTime.FromFileTime(number).ToUniversalTime(); // 06/29/2010 09:47:42

或更简单,按照Matt提到的那样使用FromFileTimeUtc;

DateTime date = DateTime.FromFileTimeUtc(number); // 06/29/2010 09:47:42

如果你想把它作为一个字符串表示,你可以使用ToString方法那个 DateTime实例与基于英语的文化(如InvariantCulture)as;

string str = date.ToString("ddd, dd MMMM yyyy HH:mm:ss 'UTC'", 
                            CultureInfo.InvariantCulture);

答案 1 :(得分:0)

使用DateTime.FromFileTimeUtc
有关详细信息,请访问this site