我看过很多帖子但没有什么帮助。 我的问题看似相似,但有点不同。
我必须将EPOC时间更改为系统时间格式。
data type = datetime
value= 20160630165419.634204+060
期望的输出 数据类型=日期时间
value= 30/06/2016 16:54:19
因为EPOC值在点之后有数字,而数据类型是datetime,这使得在循环中将其除以10并获得输入值很困难。 请仅针对给定的输入格式建议解决方案。
答案 0 :(得分:1)
您可以使用此功能WMIDateStringToDate
转换日期:
WScript.echo WMIDateStringToDate("20160227235343.000000+060")
WScript.echo WMIDateStringToDate("20160630165419.634204+060")
'************************************************************
Function WMIDateStringToDate(Mydate)
WMIDateStringToDate = CDate(Mid(Mydate, 5, 2) & "/" & _
Mid(Mydate, 7, 2) & "/" & Left(Mydate, 4) _
& " " & Mid (Mydate, 9, 2) & ":" & _
Mid(Mydate, 11, 2) & ":" & Mid(Mydate,13, 2))
End Function
'************************************************************
答案 1 :(得分:0)
第1步:对从您的输入(DateSerial())中提取的数字(TimeSerial()))使用CInt(和Mid()以获取子类型Date的变体
第2步:使用SetLocale()和Replace()格式化/字符串化日期
>> SetLocale "de-de"
>> sX = "20160630165419.634204+060"
>> dtD = DateSerial(CInt(Mid(sX, 1, 4)), CInt(Mid(sX, 5, 2)), CInt(Mid(sX, 7, 2)))
>> dtT = TimeSerial(CInt(Mid(sX, 9, 2)), CInt(Mid(sX, 11, 2)), CInt(Mid(sX, 13,2)))
>> dtX = dtD + dtT
>> WScript.Echo dtX, TypeName(dtX)
>> WScript.Echo Replace(dtX, ".", "/")
>>
30.06.2016 16:54:19 Date
30/06/2016 16:54:19
危险,威尔罗宾逊!看看这个测试脚本:
Function WMIDateStringToDate(Mydate)
WMIDateStringToDate = CDate(Mid(Mydate, 5, 2) & "/" & _
Mid(Mydate, 7, 2) & "/" & Left(Mydate, 4) _
& " " & Mid (Mydate, 9, 2) & ":" & _
Mid(Mydate, 11, 2) & ":" & Mid(Mydate,13, 2))
End Function
'************************************************************
For Each sLocale In Split("de-de en-us")
SetLocale sLocale
For Each sDate In Split("20160227235343.000000+060 20160203235343.000000+060")
On Error Resume Next
dtX = WMIDateStringToDate(sDate)
If Err.Number Then dtX = Err.Description
On Error GoTo 0
WScript.Echo GetLocale(), sD, sDate, dtX
Next
Next
及其输出:
cscript 38249865.vbs
1031 20160227235343.000000+060 27.02.2016 23:53:43
1031 20160203235343.000000+060 02.03.2016 23:53:43
1033 20160227235343.000000+060 27.02.2016 23:53:43
1033 20160203235343.000000+060 03.02.2016 23:53:43
查看原因:
任何Microsoft标准都不支持示例脚本 支持计划或服务。示例脚本按原样提供 没有任何形式的保证。微软进一步否认所有暗示 保证包括但不限于任何默示保证 适销性或适合特定用途的适用性。整个 因使用或执行示例脚本而产生的风险 文档仍然在你身边。在任何情况下,微软都不应该 作者,或参与创作,制作或作品的任何其他人 交付脚本应对任何损害承担责任 (包括但不限于营业利润损失的赔偿, 业务中断,业务信息丢失或其他 由于使用或无法使用而产生的金钱损失 样本脚本或文档,即使微软已被告知 这种损害的可能性。 (找到here)