2015-11-07 696 views
-4

我需要將窗口十六進制64位(大端)日期時間轉換爲C#中可讀的內容?如何將Windows 64位時間戳轉換爲日期時間?

例如'01cb17701e9c885a'

轉換爲"Tue, 29 June 2010 09:47:42 UTC"

任何幫助,將不勝感激。

+0

大端日期時間代表什麼?從時代開始它是毫秒嗎? –

+0

例如,02800008FFFFFFFF(字符串)是Windows 64位時間戳結構,我想將其更改爲datetime ex)2015-11-08 –

回答

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 

或更簡單,使用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當然,謝謝:)更新。 –