步骤1:使用在从输入(Mid()提取数字(CInt())DateSerial()和TimeSerial()),以获得亚型日期的变体
步骤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标准 支持计划支持或服务。示例脚本提供AS IS ,没有任何形式的担保。 Microsoft进一步拒绝所有暗示的保证,包括但不限于适销性或适用于特定用途的任何暗示保证。由于使用或执行示例脚本和 文档而产生的整个 风险仍伴随着您。在任何情况下,Microsoft,其作者或创作,生产或 交付脚本的任何其他人都不承担任何损害 (包括但不限于商业利润损失损失, 业务中断,丢失商业信息或其他因使用或无法使用 示例脚本或文档而产生的经济损失),即使Microsoft已被告知 存在此类损害的可能性。 (发现here)
感谢它的工作 –