Sprache: C#, NET Framework: 4.5, Methode verwendet: DateTime.ParseExactString wurde nicht als gültige Datetime auf einem PC erkannt
So in einem unserer Projekte verwenden wir
private DateTime FormatDate(string date, string format)
{
try
{
IFormatProvider culture = new CultureInfo("en-US", true);
DateTime dt = DateTime.ParseExact(date, format, culture);
return dt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
und nannte es wie folgt aus::
DateTime startDate = FormatDate("01/17/2016", "M/d/yyyy");
die folgende Funktion eine Zeichenfolge in ein Datetime zu analysieren
Auf unseren 3 PCs funktioniert dieser Code perfekt, wenn das Datumsformat auf jedem PC TT/MM/JJJJ ist, aber auf 2 der PCs, wenn das Datumsformat dd-MMM-yy ist, erzeugt es einen Fehler beim Ausführen von ParseExact :
String wurde nicht als gültige DateTime erkannt.
Während es auf dem dritten PC funktioniert, auch wenn Sie das Format dd-MMM-yy verwenden. I verglichen Datum und Uhrzeit-Einstellungen auf alle 3 PCs, sind alle Einstellungen gleich, der einzige Unterschied besteht darin, dass auf dem 2 PC wir Visual Studio 2013, während auf dem dritten Visual Studio 2015
Ausnahmedetails verwenden:
Nachricht: String wurde nicht als gültige DateTime erkannt.
Innerexception: Nein Interne Ausnahme
Stack: bei System.DateTime.ParseExact (String s, String-Format, IFormatProvider Provider) bei AssetTracking.PopUpWindows.AddItem_Warranty.MakeReminder (TrackersDataContext nach OT, Artikel ni, string itemId) in d: \ Lösungen \ Trackers \ Trackers \ PopUpWindows \ AddItem_Warranty.xaml.cs: Zeile 807 bei Trackers.PopUpWindows.AddItem_Warranty. <> c__DisplayClass8.b__3() in d: \ Lösungen Tacker \ Trackers \ \ PopUpWindows \ AddItem_Warranty.xaml.cs: Linie 685
Die Frage: Ich bin nicht sicher, ist der andere IDE Teil der Problem? oder was sonst kann diesen Fehler auf einigen PCs und nicht auf anderen genau die gleichen Datum und Zeit Einstellungen erzeugen?
Die IDE, die Sie verwenden, sollte keinen Einfluss auf die Anweisungen haben, die Ihr Code auch kompiliert.Ich würde denken, dass es etwas anderes wie Kultureinstellungen wäre http://stackoverflow.com/questions/27230972/datetime-parse-works-on-one-machin-but-not-the-other – Kritner
Können Sie die Ausgaben von 'vergleichen DateTimeFormatInfo.GetInstance (neue CultureInfo ("en-US", true)). GetAllDateTimePatterns() 'auf jeder Maschine? Diese Muster werden in 'DateTime.ParseX()' Methoden versucht –
Sind Sie sicher, dass die Datumszeichenfolge immer mit dem Trennzeichen übergeben wird, das Ihrem Format entspricht? – Steve