如何在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)
答案 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得到毫秒。根据包括代码中引用的网站在内的许多网站,结果似乎是准确的。