VBS中沒有類似C標準庫中的time函數(shù),怎么獲取Unix時間戳呢?乍一看很簡單:
復制代碼 代碼如下:
Function UnixTime()
UnixTime = DateDiff("s", "01/01/1970 00:00:00", Now())
End Function
一個很想當然的方法,僅僅注意到了“1970年1月1日0時0分0秒”,而忽略了“協(xié)調(diào)世界時”。
協(xié)調(diào)世界時,又稱世界標準時間或世界協(xié)調(diào)時間,簡稱UTC,從英文“Coordinated Universal Time”而來。在中國大陸的本地時間比UTC快8小時,就會寫作UTC+8。如果是在本地時間比UTC時間慢的地區(qū),例如夏威夷的時間是比UTC時間慢10小時,就會寫作UTC-10。
而VBS中的Now()函數(shù)返回的時間是包括時區(qū)的,所以獲取Unix時間戳要做一些修正。
復制代碼 代碼如下:
Function UnixTime()
Set objWMIService = _
GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem",,48)
For Each objItem in colItems
TimeZone = objItem.CurrentTimeZone
Next
UnixTime = DateDiff("s", "01/01/1970 00:00:00", Now())
UnixTime = UnixTime - TimeZone * 60
End Function
這才是正確的寫法。
參考鏈接:Epoch Unix Timestamp Conversion Tools
原文:http://demon.tw/programming/vbs-unix-time-stamp.html