出于某种原因,当我使用<时,我服务器上的ASP.NET代码现在返回 dd / MM / yyyy 格式而不是 MM / dd / yyyy 强>则DateTime.ToString(QUOT; G&QUOT)。

而不是将所有“g”替换为“g”。使用具体格式字符串或CultureInfo参数格式化字符串,是否有一种方法可以在应用程序中覆盖默认的“短日期”字符串。格式?

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

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

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

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

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

有帮助吗?

解决方案 2

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

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

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写了一些类似的函数。

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top