2009-06-23 118 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

您可以通過更改服務器控制面板中區域設置中的設置來操縱短日期格式。