2011-06-15 43 views
19

如果我這樣做,在C#:C#日期格式正在失去斜槓分隔

Console.WriteLine(DateTime.Now.ToString("ddd M/dd/yy")); 

我所期望的輸出是這樣的:

Wed 6/15/11 

但它實際上輸出這樣的:

Wed 6 15 11 

爲什麼斜線消失?有沒有辦法防止這種情況發生,並以預期格式輸出日期?

+1

我得到您的格式字符串的斜槓。你在運行的文化是什麼? – Oded 2011-06-15 17:59:27

+0

我複製了你的代碼,並用代碼編譯器運行它。它輸出'Wed 6/15/11'。 – 2011-06-15 17:59:41

+0

當您將短日期格式更改爲「ddd M/dd/yy」時,此問題僅出現在Windows 7中。 – 2011-06-15 18:01:57

回答

42
Console.WriteLine(DateTime.Now.ToString("ddd M/dd/yy", CultureInfo.InvariantCulture)); 
      Console.ReadLine(); 

嘗試上面

+3

這似乎工作,爲什麼CultureInfo.InvariantCulture這裏需要? – 2011-06-15 18:04:22

+8

@Jon - 因爲如果未指定'CultureInfo',則將使用當前文化。如果這是一種在日期中不使用斜槓作爲分隔符的文化(並且格式字符串指定日期分隔符爲'/',那麼它會被實際的文化日期分隔符替換)。 – Oded 2011-06-15 18:07:25

+1

基於http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.invariantculture.aspx我假設你的cultureinfo將「/」改爲「」 – David 2011-06-15 18:08:01

-3

我相信它應該是這樣的:

string.format("{0:ddd M/dd/yy}", DateTime.Now); 
+1

這個和我的代碼有什麼區別?都採用當前日期並使用提供的字符串進行格式化,對吧? – 2011-06-15 18:02:35

+0

@Jon,看起來你正在做的是正確的,我建議嘗試Dvd Prd的答案。 – 2011-06-15 18:05:38

18

你也可以使用

Console.WriteLine(dateTime.ToString("ddd M'/'dd'/'yy")); 

這是一個可能的解決方案,如果你不使用在這裏的其他答案中提到的不變文化。

2

格式參數中「/」(斜槓)的默認行爲是使用當前的culture date分隔符。

要強制使用「/」(斜線),必須在其前加「\」(反斜槓)。

例如:「yyyy/MM/dd」將始終顯示與當前使用的文化無關的「2015/07/02」日期。

Regards

+0

非常好的細節:)結合使用您的解決方案與「Culture.Invariant」將保證100%,您的日期具有確切的格式,您指定:) – 2016-05-30 15:31:55