2009-06-23 122 views
1

出于某种原因,更改默认ASP.NET文化,我的服务器上ASP.NET代码现在返回DD/MM/YYYY的替代 MM /DD/YYYY当我使用日期时间的格式.ToString(“g”)日期格式

,而不是一个具体的格式字符串或CultureInfo的参数替换所有的“G”格式字符串,是有办法,我可以只覆盖,在整个应用程序,默认的“短日期”格式?

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

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

我只是想覆盖任何的ToString( “G”)调用使用ISO/IEC 8824日期格式( “YYYY-MM-DD”)。

我可以搜索和在我的代码,以强制的CultureInfo在每一个toString()方法调用替换,但不打我作为最易维护的解决方案。

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

回答

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

+0

下面的url中的答案似乎比编写自定义函数更合适:http://stackoverflow.com/questions/5505647/different-datetimeformat-for-the-same-culture-in-different-machines。它简单地取代了当前文化背景下的短期模式。尽管如此,仍然不是理想的。 – Feyyaz 2012-09-29 07:14:41

1

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

我在母版页都设置了不同的文化不同的应用程序,以及页面和控件从那里继承而来。

+0

关闭,但影响由默认CultureInfo控制的* all *格式,而不仅仅是DateTime格式。 – richardtallent 2009-06-24 15:36:08

-1

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