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

本文关键字:转换 日期 时间 时间戳 64位 windows | 更新日期: 2023-09-27 18:20:56

我需要将windows十六进制64位(big-endian)日期时间转换为c#中可读的内容?

示例'01cb17701e9c885a'

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

如有任何帮助,我们将不胜感激。

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

看起来您需要将其解析为十六进制的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);

使用DateTime.FromFileTimeUtc
有关详细信息,请访问此网站