【问题标题】:How do you localize date in ASP.NET MVC如何在 ASP.NET MVC 中本地化日期
【发布时间】:2016-05-26 13:54:21
【问题描述】:

我们正在开发一个应用程序,该应用程序将提供给包括英国和美国在内的多个地区的客户。在一些查看页面上,我们会这样显示日期:

@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}" )]

同样的问题似乎是属性中的格式是硬编码的。

有什么想法吗?

【问题讨论】:

标签: c# asp.net asp.net-mvc datetime razor


【解决方案1】:

DateTime.ToString 方法有一个version with two arguments:

public string ToString(
  string format,
  IFormatProvider provider
)

另外,因为格式参数支持针对不同文化产生不同结果的格式 - 例如“d”值:

date.ToString("d", provider) 

将为 de-DE 文化生成 01.10.2008,但为 en-US 生成 10/1/2008。

有关更多信息,请参阅该 MSDN 文章的示例部分。

【讨论】:

    【解决方案2】:

    您需要从传入的请求中确定文化​​字符串,例如 en-US,然后将其映射到自定义格式字符串。然后,您可以从区域性字符串创建 CultureInfo 实例。示例:

    new CultureInfo("en-US")
    

    然后将其与DateTime.ToString 方法一起使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多