0

如果我使用这个:

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

FXCop 抱怨我违反了 CA1305 并说我应该提供一个 IFormatProvider。我需要吗?无论如何,我要求以特定格式提供日期(这是我希望将其放入 XML 的格式)。

提供格式提供程序会有什么不同吗?在这种情况下,它实际上会产生错误的结果吗?

4

2 回答 2

1

为什么不想指定格式提供程序?

如果只是懒惰,那么我可以建议定义两个片段。CultureInfo.InvariantCulture 的ic和 CultureInfo.CurrentCulture 的cc

永远不要假设转换为字符串如何使用默认文化。并非世界上每个人都使用公历。有一天,您的客户可能会聘请承包商,其计算机默认使用另一个日历,然后您没有生成正确的 XML。然后向您的客户解释您不想遵循 FxCop 的建议。


如果 .Net 包含 Xml 文化,那就最好不过了。然后你可以做

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

出于某种原因,Microsoft 选择创建一个单独的类而不是XmlConvert。自 .Net 1.0 以来,该课程一直存在。

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

将始终创建正确的 Xml 日期。

不确定这是错误还是预期行为,但XmlConvert.ToString(DateTime.Today, "d")不会创建有效的 Xml 日期。

于 2012-11-12T08:06:56.663 回答
0

因此,经过更多研究,在我的例子中似乎没有任何区别,但在一般情况下,月份可能会显示在特定的语言环境中。

更多细节在这里:

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

于 2012-10-29T19:43:43.843 回答