我们正在开发一个应用程序,可供包括英国和美国在内的多个地区的客户使用。在许多视图页面上,我们显示如下日期:
@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}" )]
同样问题似乎是格式在属性中是硬编码的。
有什么想法吗?
答案 0 :(得分:2)
DateTime.ToString方法有version with two arguments:
public string ToString(
string format,
IFormatProvider provider
)
plus,格式参数支持为不同文化产生不同结果的格式 - 例如" d"值:
date.ToString("d", provider)
将生成01.10.2008用于de-DE文化,但是10/1/2008用于en-US。
有关更多信息,请参阅该MSDN文章的示例部分。
答案 1 :(得分:0)
您需要从传入请求中确定文化字符串(如en-US),然后将其映射到自定义格式字符串。然后,您可以从区域性字符串创建CultureInfo实例。例如:
new CultureInfo("en-US")
然后使用DateTime.ToString
方法