2017-09-01 51 views
0

我有一個傳感器輸出世界時(自午夜1月1日(世界時),1904年以來的秒數)。轉換世界時間

在excel中,我可以使用下面的公式(UTtime/86400)+ 1462,然後以正常日期格式格式化單元格。

當我讀值到VB網應用程序,你知道我怎麼能這個值轉換爲日期時間變量

+1

VBScript或VB.NET? Tag說了一件事,這個問題說另一個;參考excel意味着vba。自1904年以來的秒數不是世界時,它是某種古怪的時代或專有的連續時間。 – Plutonix

+0

[轉換UTC/GMT時間到本地時間]的可能重複(https://stackoverflow.com/questions/179940/convert-utc-gmt-time-to-local-time) – TyCobb

+0

傳感器文檔將其稱爲通用時間。它的VB網絡,我糾正了問題。 TYCobb - 我讀過這個問題並沒有回答我的問題(我不認爲) – Chris

回答

0

值,其返回,因爲被稱爲劃時代的任意日期蜱或秒數日期。最常見的是Unix Epoch,它是1970年1月1日UTC以來的秒數(在某些情況下爲毫秒)。

要轉換它,您基本上可以在文章中描述Excel:將幾秒鐘添加到代表基數1/1/1964 00:00:00.0 UTC日期的DateTime變量。您可以刪除.ToLocalTime()以保持它爲UTC。

測試:

' RDG is a random data generator 
' pick a random date from 1/1/1970 to today 
Dim randomDate = DateTime.SpecifyKind(RDG.GetDate(DateType.UnixEpoch), DateTimeKind.Utc) 
Console.WriteLine(" Selected Date: {0} (UTC)", randomDate.ToString()) 
' convert/emulate a sensor date 
Dim sensorDate = DateToSensorValue(randomDate) 


Dim realDate = SensorEpochToDate(sensorDate) 
Console.WriteLine("Round trip value: {0} (Local)", realDate.ToString()) 

結果:

選擇的日期:1994年8月22日下午7點23分00秒(UTC)
往返值:1994年8月22日5 :23:00(本地)

它可能是一個很好的使它更容易使用的擴展方法,但作爲整數類型它會顯示太多var適合我的口味。