如何在 MVC 中本地化日期 ASP.NET
本文关键字:日期 ASP NET 本地化 MVC | 更新日期: 2023-09-27 18:34:36
我们正在开发一款应用程序,该应用程序将提供给包括英国和美国在内的多个地区的客户。 在许多视图页面上,我们显示如下日期:
@Model.EventDate.ToString("dd/MM/yyyy HH:mm")
这在英国运行良好,但是现在我们正在部署美国版本,它应该是这样的(日/月切换(:
@Model.EventDate.ToString("MM/dd/yyyy HH:mm")
显然,我们不希望有 2 个代码库,1 个用于英国,1 个用于美国。
无论如何,我们可以根据我们所在的地区呈现这样的日期吗?
我的猜测是,第一步是渲染这样的日期:
@Html.DisplayFor(n => Model.EventDate)
然后添加一个属性:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}" )]
同样,问题似乎是格式在属性中进行了硬编码。
有什么想法吗?
DateTime.ToString 方法有一个包含两个参数的版本:
public string ToString(
string format,
IFormatProvider provider
)
另外,对于 format,参数支持为不同区域性产生不同结果的格式 - 例如"d"值:
date.ToString("d", provider)
将产生 01.10.2008 用于 de-DE 文化,但 10/1/2008 用于 en-US。
有关详细信息,请参阅 MSDN 文章的示例部分。
您需要从传入请求中确定区域性字符串(如 en-US(,然后将其映射到自定义格式字符串。然后,可以从区域性字符串创建区域性信息实例。例:
new CultureInfo("en-US")
然后将其与 DateTime.ToString
方法一起使用