Wie funktioniert CultureInfo.InvariantCulture und DateTime in String funktioniert

Suche ich schon nach Informationen im Internet über diese optionalen parameter, CultureInfo.InvariantCulture bei der Formatierung .NET

Dieser Artikel erläutert darüber: Was bedeutet cultureinfo invariantculture bedeuten , Was ist die invariante Kultur. Aber es ist immer noch nicht klar für mich.

Ich verwalten möchten und speichern Sie eine datetime-variable als das format 'JJJJMMTT' und ich habe es wie folgt formatiert:

DateTime localDateTime = DateTime.Today; //> 2016-02-10 12:33
string formattedDateTime = localDateTime.ToString("yyyyMMdd"); //> 20160210

Ist es suppossed eine varchar-Spalte in der db mit einer Länge von 8. Aber in einem bestimmten Fall begann es zu speichern 7 chars. Ich warte, um zu bekommen Zugang zu unserem Kunden-domain zu überprüfen, die gespeicherten format.

Jeder Benutzer kann jedoch einstellen, egal in welcher Kultur, in das system (z.B. "en", "es", "fr"), so dass selbst wenn Sie die Methode ToString, die gezwungen format "JJJJMMTT", muss ich die invariante Kultur? Wenn nicht, könnte ich riskieren, um meine datetime in string mit einem anderen format? Hat die regionale Konfiguration in Datenbank-server-Rolle?

Ist, dass ich bin versucht zu tun, gerade jetzt, aber nicht sicher, ob dies das problem lösen wird, nachdem wir den check-in-tests:

DateTime localDateTime = DateTime.Today;
string formattedDateTime = localDateTime.ToString("yyyyMMdd", CultureInfo.InvariantCulture); //> 20160210

Dies ist ein weiterer Bereich, wenn ich bauen meine variable aus Datenbank und speichern Sie es in einer gespeicherten Prozedur, ich bin dabei:

CONVERT(varchar, getdate(), 112) --ISO for yyyymmdd

EDIT:

Haben wir einige tests:

DateTime currentDateTime = dateParameter; //10/2/16 12:33 PM
string dateParameterAsString = dateParameter.ToString(); //"10/2/16 12:33 PM"
string formattedIdentifier = dateParameter.ToString(System.Globalization.CultureInfo.InvariantCulture); //"02/10/2016 12:33:00"
string formattedIdentifier2 = dateParamter.ToString("yyyyMMdd"); //"20160218"
string formattedIdentifier3 = dateParamter.ToString("yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); //"20160218"
Tun Sie sich selbst einen gefallen und nicht speichern datetime-Daten als Zeichendaten. Speichern Sie es als date oder datetime.
Wenn Sie versuchen, um die Konvertierung rein für den Aufbau einer SQL-string, Sie wären besser dran mit SqlParameters
In der Tat sind wir mit einem datime Spalte in der db für diese datetime-Wert. Doch nach einigen Auswertungen werden in unseren Prozessen, speichern wir diesen Wert als identifier für biz-Zwecke in einer anderen Spalte.
YYYMMDD ist nicht die richtige format-string zu konvertieren, wird ein datetime in einen string. (yyyyMMdd) und mit diesem format Sie brauchen keine CultureInfo, aber gehen Sie zurück zu Kommentar #1 bitte
diese Frage ist deutlich mit sql server, mit dem eine datetime-Datentyp. Die Tatsache, dass sqlite nicht, ist ein klares Indiz dafür, dass es ist eine Technik, würde ich weglaufen, so schnell wie möglich. Was ein massiver Mangel.

InformationsquelleAutor Maximus Decimus | 2016-02-10

Schreibe einen Kommentar