在VB6中具有毫秒精度的Unix时间戳?

时间:2019-02-05 13:01:11

标签: vb6 unix-timestamp

如何在VB6中获得毫秒级(或更高?)精度的Unix时间戳?

(获得秒精度标记并将其乘以1000是不可接受的解决方案,因为我需要亚秒精度)

编辑:否,How to get time elapsed in milliseconds不是该问题的重复,我需要获得自1970-01-01 00:00:00以来的Unix时间戳,而该问题只需要知道它花费了多少时间。需要执行操作,答案使用GetTickCount()自系统重新启动以来计算的毫秒数,而不是自1970年以来(即使我理论上是在1970年最后一次重新启动的计算机上运行,不会,GetTickCount()的最大限制为49.7天,而且我认为这样的旧系统也不会运行Windows NT,这意味着它无法访问WinAPI的GetTickCount())

Edit2:我还没有解决方案,但是可能可以使用GetSystemTimeAsFileTime()来获取数字,但是我不知道如何在VB6中使用2x 32位整数作为64位整数来导出数字。

这也是在VB6中运行GetSystemTime()的代码(感谢danaseaman

Private Type SYSTEMTIME
   wYear                As Integer
   wMonth               As Integer
   wDayOfWeek           As Integer
   wDay                 As Integer
   wHour                As Integer
   wMinute              As Integer
   wSecond              As Integer
   wMilliseconds        As Integer
End Type

Private Declare Sub GetSystemTime Lib "KERNEL32.dll" (lpSystemTime As SYSTEMTIME)

1 个答案:

答案 0 :(得分:1)

基于许多评论,这是供该问题的未来读者使用的简单解决方案:

Private Sub Form_Load()
   'https://www.freeformatter.com/epoch-timestamp-to-date-converter.html

   Dim epoch As Currency

   epoch = (DateDiff("s", "1/1/1970", Date) + Timer) * 1000

   Debug.Print Round(epoch)
End Sub

这个想法是要计算到午夜的秒数,从午夜起加上小数秒,然后乘以1000得到毫秒。根据包括代码中引用的网站在内的许多网站,结果似乎是准确的。