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

发布于 2024-07-25 11:28:06 字数 625 浏览 8 评论 0原文

由于某种原因,当我使用 DateTime 时,我的服务器上的 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")。

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

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

For some reason, ASP.NET code on my server is now returning a format of dd/MM/yyyy instead of MM/dd/yyyy when I use DateTime.ToString("g").

Rather than replacing all the "g" format strings with a concrete format string or CultureInfo argument, is there a way I can just override, across the application, the default "short date" format?

My preference is actually "yyyy-MM-dd" as the default format, but I can live with the US-centric MM/dd/yyyy, as all users are in the US.

Clarification: I do not want to change the entire default culture, which could impact things such as currency and use of decimals/commas in formatting numbers.

I just want to override any ToString("g") call to use the ISO/IEC 8824 date format ("yyyy-MM-dd").

I could search and replace across my code to force a CultureInfo in every ToString() call, but that doesn't strike me as the most maintainable solution.

My current solution is that I've defined a static method for formatting a date, and I call it instead of ToString() across my entire codebase. But again, if I forget to do so somewhere in the code, I'll have a goofy date again.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷途知返 2024-08-01 11:28:06

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

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

You can set the default culture at the web.config (application level), Page directive or control directive.

I have various apps where the master pages are set up for different cultures, and the pages and controls inherit from there.

你穿错了嫁妆 2024-08-01 11:28:06

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

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

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

Setting the culture wasn't an option, nor was depending on the server's regional settings.

I ended up writing a utility function for formatting dates:

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

I call this everywhere I need to push a date out to the user. It also handles display of default ("magic") dates.

I wrote some similar functions for and FormatShortDateTime and FormatLongDateTime.

完美的未来在梦里 2024-08-01 11:28:06

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

You can manipulate the short date format by changing the setting in the regional settings in the control panel on your server.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文