2017-02-23 88 views
2

根據MSDN,靜態屬性DateTimeFormatInfo.InvariantInfo」獲取文化獨立(不變)「的默認只讀DateTimeFormatInfo對象。DateTimeFormatInfo.InvariantInfo日期模式不一致嗎?

然而,長日期模式爲「dddd,dd MMMM yyyy」,格式爲2016年2月29日星期一。這種格式通常用於歐洲大陸。

然而,短日期格式是「MM/dd/yyyy」,其結果格式爲02/29/2016。這種格式通常在美國使用。

更糟的是,當試圖轉換爲可排序格式「s」時,此FormatProvider將導致02/29/2016 00:00:00,這是難以排序的。

這種不一致的行爲是一個錯誤還是對「獨立於文化」的妥協?

+0

我相信en-US短日期是單月份數字,不是零填充。這就是說,這並沒有改變這個問題。 –

+0

從我在[源代碼](https://referencesource.microsoft.com/#mscorlib/system/globalization/calendardata.cs,045e92053a4b3c84)中可以看到的,它都是硬編碼沒有太多解釋爲什麼的評論,其他比也許'設置我們的默認/公曆美國日曆數據。所以這個問題可能不是不一致,也可能不是,但你需要找到預期格式的定義。 –

回答

0

似乎標準的行爲給我。 DateTimeFormatInfo.InvariantInfo既不是中性也不是特定的文化,但它生成的格式可以轉換爲任何文化特定的格式。正如你可以在source code中看到的那樣,它是基於英語但不是特定文化(但不是en-US)。同樣你的觀察:

但是短日期模式是「MM/dd/yyyy」,導致 格式02/29/2016。這種格式通常在美國使用。

是不正確的,因爲美國文化ToString(「d」)將提供2/29/2016(無領先)。時間還在上午或下午。