2012-10-29 40 views
0

如果我使用的是這樣的:將日期轉換爲具有特定格式的字符串時,是否需要提供IFormatProvider?

DateTime.Now.Date.ToString("yyyy-MM-dd") 

的FxCop抱怨說我違反了CA1305和說我應該提供商的IFormatProvider。我需要嗎?無論如何,我都是以特定的格式請求日期(這是我期望將其放入XML中的格式)。

提供一個格式提供程序有什麼區別嗎?在這種情況下可能會產生錯誤的結果?

回答

1

爲什麼你不希望指定的格式提供?

如果只是懶惰,那麼我可以推薦定義兩個片段。 CultureInfo.InvariantCulture的ic和CultureInfo.CurrentCulture的cc

永遠不要假設任何有關如何轉換爲字符串與默認文化的作品。並非世界上每個人都使用公曆。有一天,你的客戶可能會僱用一臺帶有另一個日曆的計算機的承包商作爲默認設備,然後你不會生成正確的XML。向你的客戶解釋你不想遵循FxCop的建議。


最好的事情是如果.Net包含Xml文化。然後,你可以只是做

DateTime.Today.ToString("d", CultureInfo.Xml) 

出於某種原因,微軟選擇創建一個單獨的類,而不是XmlConvert。自從.Net 1.0以來,這個類就一直存在。

XmlConvert.ToString(DateTime.Today, "yyyy-MM-dd") 

將始終創建正確的Xml日期。

不確定它是否是錯誤或預期行爲,但XmlConvert.ToString(DateTime.Today, "d")不會創建有效的Xml日期。

相關問題