0

我有一个存储为字符串的时间值,格式为HH:mm

我使用以下代码将其解析为带有 Today Date 的日期

DateTime.ParseExact("09:00","HH:mm",New System.Globalization.CultureInfi("En-GB"))

结果是2017-03-15 09:00:00

从另一台机器运行此代码时,我得到以下结果:1899-12-31 09:00:00

我将我的代码替换为以下

DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd") & " 09:00","yyyy-MM-dd HH:mm",New System.Globalization.CultureInfi("En-GB"))

它工作正常,但我仍然想知道为什么每个系统都将日期解析为不同的值???

4

1 回答 1

1

DateTime.ParseExact
From .NET 源代码中缺少年/月/日的默认值:

下表描述了在缺少某个年/月/日值时获取默认值的行为。
“X”表示该值存在。而“--”表示缺少值。

Year    Month   Day =>  ResultYear  ResultMonth     ResultDay       Note

X       X       X       Parsed year Parsed month    Parsed day
X       X       --      Parsed Year Parsed month    First day       If we have year and month, assume the first day of that month.
X       --      X       Parsed year First month     Parsed day      If the month is missing, assume first month of that year.
X       --      --      Parsed year First month     First day       If we have only the year, assume the first day of that year.

--      X       X       CurrentYear Parsed month    Parsed day      If the year is missing, assume the current year.
--      X       --      CurrentYear Parsed month    First day       If we have only a month value, assume the current year and current day.
--      --      X       CurrentYear First month     Parsed day      If we have only a day value, assume current year and first month.
--      --      --      CurrentYear Current month   Current day     So this means that if the date string only contains time, you will get current date.
于 2017-03-15T06:39:53.710 回答