我正在使用此代码将字符串转换为日期。
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) 解析日期字符串时,例如“January 14, 2013 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)。感谢@Dave Michener(请查看其评论)
所以在.Net 4
MMMM dd, yyyy tt --> 失败
MMMM dd, yyyy hh:mm --> 失败
MMMM dd, yyyy hh:mm tt --> Works
MMMM dd, yyyy HH:mm --> Works