2017-03-15 46 views
1

我正在處理日誌或歷史文件。在第1列中有這樣的時間戳。Wed Mar 01 22:08:01 EST 2017. 我將表格的全部內容複製到2d變體數組中以供進一步處理。現在我想將此時間戳存儲爲日期或日期時間以進一步處理它。VBA如何在變量中存儲時間戳

但如果我不

暗淡dTimeStamp如日期

,並在循環中使用它來存儲列1的值 dTimeStamp = CDATE(vbaseArray(I,1))

它給我typemismatch錯誤。

有沒有辦法將時間戳值存儲爲日期或日期時間? 請建議。

+0

喜@jay - 幾件事情:首先在cdate(vbaseArray(I,1))中,你在行索引中有一個'L',不確定這是問題還是隻是在粘貼時出現錯字,但是想指出來...接下來是如果你使用'Range.Value2'將一個範圍讀入數組我相信Value2刪除日期格式化...最後,我不確定格式「Wed Mar 01 22:08:01 EST 2017」可以轉換到目前爲止使用cdate-所以2選項:1)嘗試'dateValue'或2)如果這不起作用,你可能必須編寫自己的日期轉換函數從你的時間戳的格式上面的日期,不會太棘手。 - TheSilkCode – TheSilkCode

+0

Hi @SilkCode,感謝您的快速回復。 'L'是循環中的行索引。我沒有在這裏粘貼整個代碼。我也嘗試過datevalue,但它給了我相同類型的不匹配錯誤。我需要考慮編寫我自己的轉換函數。 – Jay

+0

啊,有道理。嘗試其他2,讓我知道如果作品。 – TheSilkCode

回答

1

您不能將該字符串自動轉換爲日期,因此您必須對其進行解析。一般來說,DateValueCDate寬鬆一點。

從窗戶直接

?datevalue(mid("Wed Mar 01 22:08:01 EST 2017",5,15)) 
3/1/2017 

,將永遠給你當年。它削減了一週中的一天,並在時間之後停止。

如果您需要一年,或者你只是想成爲更強大的,我會使用一個函數像

Function ConvertDate(ByVal sDate As String) As Date 

    Dim vaSplit As Variant 

    vaSplit = Split(sDate, Space(1)) 

    ConvertDate = DateValue(vaSplit(1) & Space(1) & vaSplit(2) & ", " & vaSplit(5)) + TimeValue(vaSplit(3)) 

End Function 

從即時窗口

?convertdate("Wed Mar 01 22:08:01 EST 2017") 
3/1/2017 10:08:01 PM 
+0

謝謝。這完全符合我的要求。 – Jay

相關問題