Angesichts der folgenden C# -Code:Interpretieren Termine: Console.WriteLine vs. string.Format
var dt = DateTime.Now;
Console.WriteLine("{0:MM/dd/yy} ... {1}", dt, string.Format("{0:MM/dd/yy}", dt));
... wenn das kurze Datum (unter Windows 7, Control Panel -> Region and Language -> Additonal Settings -> Date
) in die USA Standard "M/d/yyyy
gesetzt „ich bekomme diese:
06/17/14 ... 06/17/14
Allerdings, wenn ich das kurze Datum ändern " ddd dd MMM yyyy
," ich diese:
06/17/14 ... 06 17 14
Ich hatte den Eindruck, dass und string.Format
immer string formatiert DateTime
Werte identisch sind. Was ist die Erklärung für diese Diskrepanz?
EDIT: Sieht aus wie dies geschieht nur in Standard-Unit-Test-Ausgabe (Visual Studio), wo ich ursprünglich das Problem sah. Wenn der Code in einer Konsolenanwendung ausgeführt wird, lautet die Ausgabe 06 17 14 ... 06 17 14
.
Es ist nicht wichtig, was Ihre Systemeinstellungen sind, wenn Sie die Formatzeichenfolge explizit festlegen. Ich denke, hier ist etwas anderes los. – Enigmativity
Tatsächlich kann dies von Bedeutung sein, da die "/" keine wörtlichen Zeichen, sondern Trennzeichen sind und die tatsächliche Ausgabe von der Kultur abhängt, z. In Deutschland wäre es ein ".". Aber das erklärt nicht, warum die Ausgabe anders ist, wenn dasselbe explizite Format in 'Console.WriteLine' und' String.Format' verwendet wird. – Dirk
@Enigmatismus: Nun, das Ändern des kurzen Datums bedeutet anscheinend, die Kultur zu ändern, was .NET betrifft. Ich frage mich nur, warum die beiden Methodenaufrufe sich nicht gleich verhalten. – MiloDC