1

出于某种原因,当我使用DateTime.ToString("g")时,我服务器上的 ASP.NET 代码现在返回的格式为dd/MM/yyyy而不是MM/dd/yyyy

与其用具体的格式字符串或 CultureInfo 参数替换所有“g”格式字符串,有没有一种方法可以在整个应用程序中覆盖默认的“短日期”格式?

我的偏好实际上是“yyyy-MM-dd”作为默认格式,但我可以接受以美国为中心的 MM/dd/yyyy,因为所有用户都在美国。

澄清:我不想更改整个默认文化,这可能会影响货币和在格式化数字中使用小数/逗号等内容。

我只想覆盖任何 ToString("g") 调用以使用 ISO/IEC 8824 日期格式(“yyyy-MM-dd”)。

我可以在我的代码中搜索和替换,以在每个 ToString() 调用中强制使用 CultureInfo,但这并不是最可维护的解决方案。

我目前的解决方案是我已经定义了一个格式化日期的静态方法,我在整个代码库中调用它而不是 ToString()。但是再一次,如果我忘记在代码中的某个地方这样做,我将再次有一个愚蠢的约会。

4

3 回答 3

1

您可以在 web.config(应用程序级别)、页面指令或控制指令中设置默认区域性。

我有各种应用程序,其中为不同的文化设置母版页,并且页面和控件从那里继承。

于 2009-06-23T19:42:20.877 回答
0

设置文化不是一种选择,也不是取决于服务器的区域设置。

我最终编写了一个用于格式化日期的实用程序函数:

Public Shared Function FormatShortDate(ByVal d As Date) As String
    If d=#1/1/0001# Then Return ""
    If d=#1/1/1900# Then Return ""
    'ISO/IEC 8824 date format
    Return d.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture)
End Function

我在需要向用户推送日期的任何地方都调用它。它还处理默认(“魔术”)日期的显示。

我为 FormatShortDateTime 和 FormatLongDateTime 编写了一些类似的函数。

于 2009-07-23T20:58:31.457 回答
-1

您可以通过更改服务器控制面板的区域设置中的设置来操作短日期格式。

于 2009-07-17T19:50:45.237 回答