【发布时间】:2023-03-11 12:58:03
【问题描述】:
当我使用 DateTime.ParseExact 时,我得到了意想不到的结果。 这是我的测试代码:
Dim MinVal As DateTime = #12:00:01 AM#
Dim MaxVal As DateTime = #11:59:59 PM#
Dim TooBig1, Equal1 As Boolean
Dim TooBig2, Equal2 As Boolean
Dim dt1 As DateTime = #12:00:01 AM#
Dim dt2 As DateTime = DateTime.ParseExact("12:00:01 AM", "hh:mm:ss tt", Globalization.DateTimeFormatInfo.InvariantInfo)
TooBig1 = (dt1.CompareTo(MaxVal) > 0)
Equal1 = (dt1.CompareTo(MinVal) = 0)
TooBig2 = (dt2.CompareTo(MaxVal) > 0)
Equal2 = (dt2.CompareTo(MinVal) = 0)
dt1 的结果很好:
- 它在调试器中显示为 #12:00:01 AM#(没有日期)
- TooBig1 为假
- Equal1 为真
但结果对于 dt2 来说是(错误的?)意外:
- 它在调试器中显示为 #9/30/2011 12:00:01 AM#
- TooBig2 是真的
- Equal2 为假
看起来是因为 ParseExact 系统地添加了日期,即使我只在格式中指定了时间。
我的问题是:如何使用 DateTime.ParseExact 读取时间?
【问题讨论】: