Windows求时间差 vbs脚本
格式:
difMinute = datediff("s","startTime", "endTime")
示例:
difMinute = datediff("s","2022-03-06 02:00", "2022-03-07 10:23")
解释:
# d 日
# ww 周
# h 小时
# m 分钟
# s 秒
案例1:
difMinute = datediff("s","2022-03-06 02:00", "2022-03-07 10:23") / 60 / 60
Wscript.Echo "difMinute:" & difMinute
difM=Round(difMinute,2)
min=split(difM,".")(1)*60/100
m=round(min,0)
h=split(difM,".")(0)
Wscript.Echo "difM:" & h &" 小时 "& m &" 分钟"
案例2:
获取机器运行时长,即从开机到现在经过多久时间(当前时间 - 开机时间)
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colLoggedEvents = WMI.ExecQuery("Select * from Win32_NTLogEvent Where Logfile = 'System' And EventCode = '6005' Or EventCode = '6006'")
For Each objEvent In colLoggedEvents
Flag = Flag +1
If Flag = 1 Then
startTime=UTCtoNow(objEvent.TimeWritten)
End If
Next
CurrentDate = year(Now) &"-"& Month(Now) &"-"& day(Now)
CurrentTime = Hour(Now) &":"& Minute(Now) &":"& Second(Now)
currentTime = CurrentDate &" "& CurrentTime
difMinute = datediff("s",startTime,currentTime ) / 60 / 60
difM = round(difMinute,2)
m=Round(split(difM,".")(1)*60/100,0)
h=split(difM,".")(0)
Wscript.Echo "difM:" & h &" 小时 "& m &" 分钟"
Function UTCtoNow(nD)
If Not IsNull(nD) Then
Set SWDT = CreateObject("WbemScripting.SWbemDateTime")
SWDT.Value = nD
UTCtoNow = SWDT.GetVarDate(True)
End If
End Function