使用DateTime.ParseExact解析时,字符串的格式不正确

时间:2016-09-28 09:17:29

标签: c# parsing

当我尝试将此字符串解析为日期时:

1.05.2016

使用此代码:

var startDate = DateTime.ParseExact(Console.ReadLine(),
              "dd.m.yyyy", CultureInfo.InvariantCulture);

发生错误:

Unhandled Exception: System.FormatException: String was not recognized as a valid DateTime.
   at System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style)
   at System.DateTime.ParseExact(String s, String format, IFormatProvider provider)
   at _09.Holidays_Between_Two_Dates.Program.Main(String[] args) in C:\Users\martin\documents\visual studio 2015\Projects\Methods. Debugging - Troubleshooting Code\09. Holidays Between Two Dates\09. Holidays Between Two Dates.cs:line 15

有人可以帮忙吗?提前谢谢。

3 个答案:

答案 0 :(得分:1)

更正格式,因为输入日期时间格式和提供的格式必须匹配

您的输入1.05.2016可以使用

var startDate = DateTime.ParseExact(Console.ReadLine(),
              "d.MM.yyyy", CultureInfo.InvariantCulture);

但是日期并不总是单个数字,因此最好使用双位01.05.2016

var startDate = DateTime.ParseExact(Console.ReadLine(),
              "dd.MM.yyyy", CultureInfo.InvariantCulture);

答案 1 :(得分:1)

“M”代表月份,“m”代表分钟。确保使用正确的:

{{1}}

答案 2 :(得分:0)

您可以仔细检查来自Console.Readline()的输入吗?也许它包含回车或其他一些非法字符?我在LinqPad中运行了以下内容:

DateTime.ParseExact("1.05.2016","d.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture).Dump();

它返回“01/05/2016 00:00:00”。