我正在使用此代碼將字符串轉換爲日期。AM/PM指示符的日期格式不正確解析
Dim outputDate as Date ' I have tried also with DateTime
Dim inputStringDate as String = "January 14, 2013 PM"
Dim dateFormat as string = "MMMM dd, yyyy tt"
isValidDate = Date.TryParseExact(inputStringDate, dateFormat, New CultureInfo("en-US"), _
Globalization.DateTimeStyles.None, outputDate)
' isValidDate = true
outputDate.ToString(dateFormat) 'January 14, 2013 AM
問題是「tt」無法識別。輸入的文本是「PM」(2013年1月14日PM),但在解析到日期並應用它的格式後,我得到了「AM」(2013年1月14日AM)。
outputDate
的時間是00:00:00,但我認爲它應該是PM默認時間12:00:00。
環境:NET 2.0
dtinfo.PMDesignator = PM
dtinfo.AMDesignator = AM
感謝您的幫助
概述
當試圖解析日期帶有AM/PM標識符(tt)但沒有時間(hh:mm)的字符串,例如「2013年1月14日PM」(MMMM dd,yyyy tt),似乎.NET Framework 2會成功解析它,但會通過將時間設置爲AM默認值來忽略AM/PM部分,這是午夜(00:00)。解決方案總是給它一些時間,例如, 「hh:mm tt」或「HH:mm」。
但在同一場景中使用.Net Framework 4時,無需時間解析日期字符串將會失敗;這是因爲.Net 4需要時間和AM/PM指示符(hh:mm tt),或使用24格式(HH:mm)。感謝@戴夫·米切納這個(請查看其評論)
所以在.NET 4中
MMMM DD,YYYY TT - >失敗
MMMM DD,YYYY HH:MM - >失敗
MMMM DD,YYYY HH:MM TT - >作品
MMMM DD,YYYY HH:MM - >作品
可能因爲時間是00:00:00。 – dbasnett
http://stackoverflow.com/questions/7875259/how-get-a-m-p-m-from-datetime – Prageeth
當我嘗試你的代碼時,'isValidDate'也是錯誤的。 –