C# 更改日期格式的ASP.NET默认区域性

C# 更改日期格式的ASP.NET默认区域性,c#,datetime,asp.net-3.5,string-formatting,cultureinfo,C#,Datetime,Asp.net 3.5,String Formatting,Cultureinfo,出于某种原因,当我使用DateTime.ToString(“g”)时,服务器上的ASP.NET代码现在返回的格式是dd/MM/yyyyy,而不是MM/dd/yyyyy 有没有一种方法可以在整个应用程序中覆盖默认的“短日期”格式,而不是用具体的格式字符串或CultureInfo参数替换所有的“g”格式字符串 我的默认格式实际上是“yyyy-MM-dd”,但我可以使用以美国为中心的MM/dd/yyyy,因为所有用户都在美国 澄清:我不想更改整个默认区域性,这可能会影响货币和数字格式中小数/逗号的使用

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

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

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

澄清:我不想更改整个默认区域性,这可能会影响货币和数字格式中小数/逗号的使用

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

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


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

您可以在web.config(应用程序级)、Page指令或control指令中设置默认区域性


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

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

设置区域性不是选项,也不取决于服务器的区域设置

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

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

Close,但这会影响默认CultureInfo控制的所有格式,而不仅仅是DateTime格式。以下url中的答案似乎比编写自定义函数更合适:。它只是取代了当前文化的短期模式。不过,这仍然不是理想的。