2016-09-28 4 views
0

Wenn ich versuche, diese Zeichenfolge in ein Datum zu analysieren:String war nicht in einem korrekten Format, wenn sie mit DateTime.ParseExact analysiert

1.05.2016 

Mit diesem Code:

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

tritt ein Fehler auf:

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 

Kann jemand helfen? Danke im Voraus.

+0

Try ' "d.MM.yyyy"' als Format – Pikoh

+0

[? Wie formatiere ich ein Datetime in einem anderen Format] (http://stackoverflow.com/questions/35650681/how-do-i-format-a-datetime-in-einem-anderen-Format) – CodeCaster

Antwort

1

"M" steht für Monate und "m" steht für Minuten. Stellen Sie sicher, dass Sie richtig verwenden ein:

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

Sehen Sie sich https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx an –

1

Korrigieren Sie das Format, da die Eingabe Datetime-Format und zur Verfügung gestellt Format 1.05.2016

für Ihre Eingabe übereinstimmen müssen Sie

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

aber heute nicht immer einstelligen verwenden können wird so besser zweistelliger zu verwenden 01.05.2016 und

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

Warum muss er die Eingabe ändern? – Pikoh

+0

für Sicherheit, weil nicht das ganze Datum wird einzelne Ziffer sein, aber es kann – Mostafiz

+1

weggelassen werden Ich verstehe nicht, was Sie sagen. Wenn Sie "d.MM.yyyy" als Format verwenden, wird zum Beispiel "11.05.2016" korrekt analysiert. Der Tag ist nicht auf 1 Stelle beschränkt. – Pikoh

0

können Sie doppelt überprüfen Sie Ihre Eingabe von Console.Readline()? Vielleicht enthält es den Wagenrücklauf oder einige andere illegale Charaktere? Ich habe folgende in LinqPad ausgeführt:

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

Und es zurückgegeben "01/05/2016 00:00:00".

Verwandte Themen