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));
War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top