转换世界时间

时间:2017-09-01 15:09:15

标签: vb.net

我有一个传感器,它以通用时间输出(自1月1日午夜(世界时)以来的秒数,1904年)。

在excel中,我可以使用以下等式(UTtime / 86400)+ 1462,然后以正常日期格式格式化单元格。

当我将值读入vb net app时,您知道如何将此值转换为DateTime变量

1 个答案:

答案 0 :(得分:0)

返回自任意日期以来的滴答数或秒数的值称为Epoch Dates。最常见的是Unix Epoch,它是自1970年1月1日UTC以来的秒数(在某些情况下为毫秒)。

要进行转换,您基本上可以完成帖子为Excel所描述的内容:将这几秒钟添加到代表基本DateTime日期的1/1/1964 00:00:00.0 UTC变量中。

Private Function SensorEpochToDate(value As Long) As DateTime
    ' remove the 
    Return New DateTime(1904, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).
                AddSeconds(value).ToLocalTime()
End Function

您可以删除.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())

结果:

  

选定日期:8/22/1994 7:23:00 PM(UTC)
  往返价值:8/22/1994 5:23:00 PM(本地)

将它作为一种扩展方法以使其更易于使用可能会很好,但作为一个整数类型,它会根据我的口味显示太多变量。

相关问题