使用 DateTime.ParseExact() 的时间解析问题
Time parsing Issue using DateTime.ParseExact()
我将时间值存储为字符串,格式为 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"))
它工作正常,但我仍然想知道为什么每个系统都将日期解析为不同的值???
DateTime.ParseExact
中缺少 Year/Month/Day 的默认值
来自 .NET 源代码:
下面table描述了获取默认值的行为
当缺少某些 year/month/day 值时。
"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.
我将时间值存储为字符串,格式为 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"))
它工作正常,但我仍然想知道为什么每个系统都将日期解析为不同的值???
DateTime.ParseExact
中缺少 Year/Month/Day 的默认值
来自 .NET 源代码:
下面table描述了获取默认值的行为
当缺少某些 year/month/day 值时。
"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.