Heim > Artikel > Backend-Entwicklung > Ein wenig Verständnis für Datumsanzeigeformatzeichenfolgen
http://www.cnblogs.com/longsan/archive/2006/04/05/367462.html
Heute hat ein Internetnutzer den folgenden Code in der Q-Gruppe gepostet:
strings=Calendar1.TodaysDate.ToString("d");
Ich möchte „MM/dd/yyyy“ anzeigen, aber es wird immer „04-01-2006“ angezeigt, was nicht das ist, was ich möchte. „01.04.2006“.
Anfangs ging ich auch davon aus, dass „MM/tt/jjjj“ (benutzerdefinierte Formatzeichenfolge) oder „d“
(Standardformatzeichenfolge) verwendet werden kann, aber nach Experimenten habe ich das herausgefunden Es wird immer „04.01.2006“ angezeigt. Später habe ich die Hilfe überprüft und folgendes Verständnis für dieses Problem erhalten:
1. Die Anzeige von Standardformatzeichenfolgen bezieht sich auf den lokalen Bereich auf dem Computer, auf dem das Programm ausgeführt wird, d. h. auf CultrueInfo . Beispielsweise ist in den lokalen Regionaleinstellungen auf Ihrem Computer das Trennzeichen zwischen den festgelegten Daten „-“. Das, was Sie mit dem obigen Code anzeigen, ist dann immer „-“, es sei denn, Sie ändern die lokalen Regionaleinstellungen.
2. Der Standardanzeigemodus des obigen Codes ist „04/01/2006“ in amerikanischem Englisch, „04-01-2006“ in Chinesisch und „04.01.2006“ in Deutsch.
3. Wenn Sie „01.04.2006“ anzeigen möchten, ohne die lokalen Bereichseinstellungen zu ändern, sollten Sie eine benutzerdefinierte Formatzeichenfolge verwenden:
strings=Calendar1.TodaysDate.ToString("MM'/'dd'/'yyyy");
Die beiden eingeschlossenen einfachen Anführungszeichen sind beliebige Zeichenfolgen, die bei der Anzeige direkt angezeigt werden.
Mehrere Lösungen:
Die erste ist wie in 3 oben erwähnt.
Der zweite Typ
Fügen Sie in Web.Config Folgendes hinzu:
Dies ist am bequemsten, aber ich habe es noch nicht ausprobiert.
Der dritte Typ
Systemsteuerung->Regionale Optionen->Anpassen ( (rechts neben der Zeitschaltfläche)
Ja, aber es ist nicht tragbar.
Einige Referenzinformationen:
Datumsformatanzeige
In SQL ist DateTime ein 8-stelliges Datum. Das angegebene Format ist 2003-12-31 00:00:00
Das am häufigsten verwendete in ASP.NET ist nur 2003-. 12- Es ist nur ein Teil des 31. Sie können
DateTime.Now.ToString("d") oder DateTime.Now.ToShortDateString();
verwenden, aber es hängt davon ab, ob das spezifische Format 2003/12/ ist. 31 oder 2003-12-31. Wie lautet Ihre Systemkonfiguration?
Wenn Sie sicher sein möchten, dass Sie die Spezifikation 2003-12-31 erhalten, verwenden Sie das benutzerdefinierte Format .Tostring()
Für die Zeichen Im Format können Sie das oben genannte Dokument sehen.
Zum Beispiel gibt .ToString("yyyy-MM-dd") den Wert 2003-11-25 zurück
.ToString("yyyyMMdd") gibt 20031125
zurück
d und zeigt den Tag als Zahl ohne führende Nullen an (z. B. 1). Wenn dies das einzige Zeichen in einem benutzerdefinierten Zahlenformat ist, verwenden Sie
%d.
dd zeigt den Tag als Zahl mit führenden Nullen an (z. B. 01).
ddd Zeigt den Tag in abgekürzter Form an (z. B. So).
dddd Zeigt den Tag als vollständigen Namen an (z. B. Sonntag).
M Zeigt den Monat als Zahl ohne führende Nullen an (z. B. wird Januar als 1 dargestellt). Wenn dies das einzige
-Zeichen in einem benutzerdefinierten Zahlenformat ist, verwenden Sie %M.
MM zeigt den Monat als Zahl mit führenden Nullen an (z. B. 12.01.01).
MMM zeigt den Monat als Abkürzung an (z. B. Jan).
MMMM Zeigt den Monat als vollständigen Monatsnamen an (z. B. Januar).
gg Zeigt eine Ära/Epoche-Zeichenfolge an (z. B. n. Chr.).
h Zeigt die Stunde als Zahl ohne führende Nullen an (z. B. 13:15:15 Uhr) im 12-Stunden-Format. Wenn dies das einzige Zeichen in einem benutzerdefinierten Ziffernformat ist, verwenden Sie %h.
hh Zeigt die Stunde als Zahl mit führenden Nullen im 12-Stunden-Format an (z. B. 13:15:15).
H Zeigt die Stunde als Zahl ohne führende Nullen im 24-Stunden-Format an (z. B. 1:15:15). Verwenden Sie %H, wenn dies das einzige Zeichen im benutzerdefinierten Zahlenformat
ist.
HH zeigt die Stunde als Zahl mit führenden Nullen (z. B. 01:15:15) im 24-Stunden-Format an.
m Zeigt Minuten als Zahl ohne führende Nullen an (z. B. 12:1:15). Wenn dies das einzige Zeichen
in einem benutzerdefinierten Zahlenformat ist, verwenden Sie %m.
mm Zeigt Minuten als Zahl mit führenden Nullen an (z. B. 12:01:15).
s zeigt Sekunden als Zahl ohne führende Nullen an (z. B. 12:15:5). Verwenden Sie %s, wenn dies das einzige Zeichen
in einem benutzerdefinierten Zahlenformat ist.
ss zeigt Sekunden als Zahl mit führenden Nullen an (z. B. 12:15:05).
F zeigt den Sekundenbruchteil an. Beispielsweise wird ff auf die nächste Hundertstelsekunde genau angezeigt, während ffff auf die nächste Zehntausendstelsekunde genau angezeigt wird.
Bis zu sieben f-Symbole können in benutzerdefinierten Formaten verwendet werden. Wenn dies das einzige Zeichen in einem benutzerdefinierten Zahlenformat ist, verwenden Sie %f.
T verwendet das 12-Stunden-Format und zeigt ein großes A für jede Stunde vor Mittag und ein großes P für jede Stunde
zwischen Mittag und 23:59 Uhr an. Wenn dies das einzige Zeichen in einem benutzerdefinierten Zahlenformat ist, verwenden Sie %t.
tt verwendet eine 12-Stunden-Uhr und zeigt AM für jede Stunde vor Mittag in Großbuchstaben an; PM für jede Stunde
zwischen Mittag und 23:59 Uhr.
y Zeigt das Jahr (0-9) als Zahl ohne führende Nullen an. Wenn dies das einzige Zeichen in einem benutzerdefinierten Zahlenformat ist, verwenden Sie
%y.
yy Zeigt das Jahr im zweistelligen Format mit führenden Nullen an, falls zutreffend.
yyy zeigt das Jahr im vierstelligen Format an.
yyyy zeigt das Jahr im vierstelligen Format an.
z zeigt den Zeitzonenversatz ohne führende Nullen an (z. B. -8). Wenn dies das einzige Zeichen in einem benutzerdefinierten Zahlenformat ist, verwenden Sie
%z.
zz Zeigt den Zeitzonenversatz mit führenden Nullen an (z. B. -08)
zzz Zeigt den vollständigen Zeitzonenversatz an (z. B. -08:00)
Das Gleiche kann für die Zeitformatierung durchgeführt werden. Sie können ein benutzerdefiniertes Format verwenden, um das gewünschte Ausgabeformat festzulegen.
Sie können die Zeichen in der obigen Tabelle für jede beliebige Kombination verwenden, unabhängig von der Reihenfolge. Wenn Sie beispielsweise jjjj-jjjj schreiben, ist dies auch möglich.
Hinweis: Das Format muss im DateTime-Format vorliegen. Andernfalls ist das Format ungültig oder falsch. Insbesondere im Format von DataGrid,
2) Datumseingabe
Wir verwenden üblicherweise DateTime.Pares()
bei der Eingabe von Datumsformaten. Die Konvertierung dieses Formulars ist jedoch recht begrenzt, und einige C#-Programme verstehen das von Ihnen geschriebene Datum nicht wie 20031231. Jeder weiß, dass es 2003-
12-31 ist. Wir können es so machen:
//Legen Sie das Sprachland fest
System.IFormatProvider format= new System .Globalization.CultureInfo("zh-CN",true);
//Geben Sie das Konvertierungsformat an
Response.Write(DateTime.ParseExact(this.TextBox1.Text,"yyyyMMdd",format));
Auf diese Weise kann er das Datumsformat von Nr. 20031231 sehen
Aber es ist schade, dass er nur das Format JJJJMMTT konvertieren kann und keine anderen Formate konvertieren kann?
Aber .NET bietet eine weitere Überladungsversion.
public static DateTime ParseExact(string, string[], IFormatProvider, DateTimeStyles);
kann mehrere angegebene Datumsformate konvertieren.