genaue Daten in C # Parsen sollten Sie nicht zwingen, eine IFormatProvider zu erstellen
-
09-06-2019 - |
Frage
Jemand bitte korrigieren Sie mich, wenn ich falsch liege, aber das Parsen ein yyyy / MM / dd (oder andere spezifische Formate) Daten in C # sollte so einfach wie
DateTime.ParseExact(theDate, "yyyy/MM/dd");
aber nicht, C # zwingt Sie eine IFormatProvider erstellen.
Gibt es eine app.config freundliche Art und Weise dies zu setzen, so brauche ich nicht diese jedes Mal zu tun?
DateTime.ParseExact(theDate, "yyyy/MM/dd", new CultureInfo("en-CA", true));
Lösung
Das IFormatProvider Argument kann null sein.
Andere Tipps
ParseExact braucht eine Kultur: "yyyy MMM dd" betrachten. MMM wird ein lokalisierter Monat Name sein, der die aktuelle Kultur verwendet.
Mit der aktuellen Anwendung Kultur:
DateTime.ParseExact("2008/12/05", "yyyy/MM/dd", System.Globalization.CultureInfo.CurrentCulture);
Sie können die Anwendung Kultur in der app.config setzen die Globalisierung-Tag. Denke ich.
Erstellen Sie eine Erweiterungsmethode:
public static DateTime ParseExactDateTime(this string dateString, string formatString) {
return DateTime.ParseExact(dateString, formatString, new CultureInfo("en-CA", true));
}
Es erfordert die Format-Provider, um die besondere Datum und Uhrzeit Symbole und Zeichenkette (wie Namen der Tage der Woche in einer bestimmten Sprache) zu bestimmen. Sie können eine Null verwenden, wobei in diesem Fall die Cultureinfo-Objekt, das auf der aktuellen Kultur entspricht verwendet wird.
Wenn Sie nicht haben wollen, es jedes Mal angeben, erstellen Sie eine Erweiterungsmethode, die entweder übergibt null oder Culture ( „en-CA“, true) als Format-Provider.
Sie können auch erstellen Sie einfach die IFormatProvider einmal und speichern Sie sie für die spätere Verwendung.
Sie können auch die Convert-Klasse verwenden
Convert.ToDateTime("2008/11/25");
// Konvertieren Datum MySql kompatibles Format
Datetime DatWert = Convert.ToDateTime (datetimepicker.text);
string DatWert = DateValue.ToString ( "yyyy-MM-dd");
Was bei der Verwendung von Globalization.CultureInfo.InvariantCulture falsch?