当我使用 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 为假
- 等于 1 为 True
但结果对于 dt2 来说是(错误的?)出乎意料的:
- 它在调试器中显示为 #9/30/2011 12:00:01 AM#
- TooBig2 是真的
- Equal2 为 False
看起来这是因为尽管我只在格式中指定了时间,但 ParseExact 系统地添加了日期。
我的问题是:如何使用 DateTime.ParseExact 读取时间?
文档 states:
如果 format 定义了一个没有日期元素的时间并且解析操作成功,则生成的 DateTime 值的日期为DateTime.Now.Date
.
如果您想要没有日期的时间,您可以使用:
var parsedDate = DateTime.ParseExact(...);
var timeOnly = parsedDate - parsedDate.Date;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)