如果之前已詢問過此問題,請指出正確的方向。我似乎無法找到任何有用的我的谷歌技能。VBA使用格式()或CDate()將字符串轉換爲日期的問題
我有以下代碼,它讀取像這樣的字符串;停電開始日期:05/10/11 23:59 EST
翻出的最新信息,即05/10/11 23:59
sStartTime = Mid(objItem.Body, 18, 15) ' Extract the start time
Debug.Print "sStartTime after reading: " & sStartTime
sStartTime = Format(sStartTime, "dd/mm/yy hh:mm") ' Format date correctly
Debug.Print "sStartTime after formatting: " & sStartTime
這是輸出我通常會:
sStartTime after reading: 05/10/11 23:59
sStartTime after formatting: 10/05/11 23:59
但有時會交換一天甚至一年:
sStartTime after reading: 14/07/11 23:59
sStartTime after formatting: 11/07/14 23:59
然後CDATE完全充塞周圍的事物,轉換日期這樣的事情在1931年...任何幫助日期字符串轉換爲日期OBJE ct將不勝感激。
===============
編輯:也許應該已經在最初的帖子中提到這一點。讀取字符串後的想法是將其轉換爲Date對象,以便創建日曆約會。 當前我使用這個;
dStartTime = CDate(sStartTime)
我認爲這是問題線,sStartTime = 「29/09/11 23:00」(DD/MM/YY HH:MM)和dStartTime =「2029年11月9日11:00: 00 PM「
因此很顯然有一些轉換問題在那裏進行,但我不知道我打算將哪種格式送入CDate函數以便將 29/09/11 23:00轉換爲等價日期對象。
計算機控制面板上的日期和時間設置是什麼?你似乎在處理美國和其他日期格式的混合。你的日期字符串不是明確的,所以這會導致麻煩。 – Fionnuala
Gosh ...我希望文檔會指定它依賴於系統日期/時間來完成轉換! 我的日期/時間設置爲m/dd/yyyy和標準hh:mm上午/下午時間。 轉換字符串的最佳方式是什麼? 我無法更改系統時間或字符串的輸入方式。 – FizzBuzz
您的輸入字符串表示EST,所以這表明它是美國的日期,因爲您的系統日期如此,所以這應該使事情變得更容易,但是,爲了完全自信,通常最好使用DateSerial:http://msdn.microsoft.com/en-us/library/gg264202.aspx – Fionnuala