Datetime VBS中EPOC日期到正常系统日期

Datetime VBS中EPOC日期到正常系统日期,datetime,vbscript,date-format,epoch,Datetime,Vbscript,Date Format,Epoch,我读过很多帖子,但没有什么真正的帮助。 我的问题看起来很相似,但有点不同 我必须将EPOC时间更改为系统时间格式 data type = datetime value= 20160630165419.634204+060 期望输出 数据类型=日期时间 value= 30/06/2016 16:54:19 由于EPOC值在点后有数字,且数据类型为datetime,这使得在循环中很难将其除以10并获得总值。 请仅针对给定的输入格式建议解决方案 步骤1:使用从输入()中提取的数字()上的and()

我读过很多帖子,但没有什么真正的帮助。 我的问题看起来很相似,但有点不同

我必须将EPOC时间更改为系统时间格式

data type = datetime
value= 20160630165419.634204+060
期望输出 数据类型=日期时间

value= 30/06/2016 16:54:19
由于EPOC值在点后有数字,且数据类型为datetime,这使得在循环中很难将其除以10并获得总值。 请仅针对给定的输入格式建议解决方案

步骤1:使用从输入()中提取的数字()上的and()来获取子类型Date的变量

步骤2:使用和格式化/字符串化日期

>> 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标准都不支持示例脚本 支持计划或服务。示例脚本按原样提供 没有任何形式的保证。微软进一步否认所有暗示 担保,包括但不限于以下内容的任何默示担保: 适销性或适合某一特定目的的。整个 因使用或执行示例脚本而产生的风险,以及 文件仍由您保管。在任何情况下,微软及其 作者,或参与创作、制作或 脚本的交付将对任何损害负责 (包括但不限于营业利润损失赔偿金, 业务中断、业务信息丢失或其他 (经济损失)由于使用或无法使用 示例脚本或文档,即使已通知Microsoft 这种损害的可能性。 (发现)


您可以使用此函数
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
'************************************************************