2016-07-07 38 views
1

我已閱讀了很多文章,但沒有什麼幫助。 我的問題看起來相似,但有點不同。EPOC日期到VBS中的正常系統日期

我必須將EPOC時間更改爲系統時間格式。作爲EPOC值

data type = datetime 
value= 20160630165419.634204+060 

期望的輸出 數據類型=日期時間

value= 30/06/2016 16:54:19 

點之後具有數字和數據類型是日期時間,這使得它難以通過10在一個循環中把它和得到ingteral值。 請僅爲給定的輸入格式建議解決方案。

回答

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 
'************************************************************ 
+0

感謝它的工作 –

0

步驟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