如果我這樣做,在C#:C#日期格式正在失去斜槓分隔
Console.WriteLine(DateTime.Now.ToString("ddd M/dd/yy"));
我所期望的輸出是這樣的:
Wed 6/15/11
但它實際上輸出這樣的:
Wed 6 15 11
爲什麼斜線消失?有沒有辦法防止這種情況發生,並以預期格式輸出日期?
如果我這樣做,在C#:C#日期格式正在失去斜槓分隔
Console.WriteLine(DateTime.Now.ToString("ddd M/dd/yy"));
我所期望的輸出是這樣的:
Wed 6/15/11
但它實際上輸出這樣的:
Wed 6 15 11
爲什麼斜線消失?有沒有辦法防止這種情況發生,並以預期格式輸出日期?
Console.WriteLine(DateTime.Now.ToString("ddd M/dd/yy", CultureInfo.InvariantCulture));
Console.ReadLine();
嘗試上面
這似乎工作,爲什麼CultureInfo.InvariantCulture這裏需要? – 2011-06-15 18:04:22
@Jon - 因爲如果未指定'CultureInfo',則將使用當前文化。如果這是一種在日期中不使用斜槓作爲分隔符的文化(並且格式字符串指定日期分隔符爲'/',那麼它會被實際的文化日期分隔符替換)。 – Oded 2011-06-15 18:07:25
基於http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.invariantculture.aspx我假設你的cultureinfo將「/」改爲「」 – David 2011-06-15 18:08:01
我相信它應該是這樣的:
string.format("{0:ddd M/dd/yy}", DateTime.Now);
這個和我的代碼有什麼區別?都採用當前日期並使用提供的字符串進行格式化,對吧? – 2011-06-15 18:02:35
@Jon,看起來你正在做的是正確的,我建議嘗試Dvd Prd的答案。 – 2011-06-15 18:05:38
你也可以使用
Console.WriteLine(dateTime.ToString("ddd M'/'dd'/'yy"));
這是一個可能的解決方案,如果你不使用在這裏的其他答案中提到的不變文化。
格式參數中「/」(斜槓)的默認行爲是使用當前的culture date分隔符。
要強制使用「/」(斜線),必須在其前加「\」(反斜槓)。
例如:「yyyy/MM/dd」將始終顯示與當前使用的文化無關的「2015/07/02」日期。
Regards
非常好的細節:)結合使用您的解決方案與「Culture.Invariant」將保證100%,您的日期具有確切的格式,您指定:) – 2016-05-30 15:31:55
我得到您的格式字符串的斜槓。你在運行的文化是什麼? – Oded 2011-06-15 17:59:27
我複製了你的代碼,並用代碼編譯器運行它。它輸出'Wed 6/15/11'。 – 2011-06-15 17:59:41
當您將短日期格式更改爲「ddd M/dd/yy」時,此問題僅出現在Windows 7中。 – 2011-06-15 18:01:57