2013-07-17 175 views
3

我有一个属性,如下所示:日期时间是格式不正确

[DataType(DataType.DateTime)] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 
public DateTime ? EndDate { set; get; } 

当我使用

@Html.DisplayFor(modelItem => item.EndDate) 

我得到的结果如下:

17.07.2013 

这是为什么发生了什么?

+3

+1“gimme teh codez plz ....” –

+2

.NET DateTime格式化会将斜杠替换为当前区域设置使用的日期分隔符。通常,这将是asp.net应用程序正在运行的用户的区域设置。 –

+0

我一直对wr0K感到无聊!并且这还没有开始:'( – DarthVader

回答

2

有几种方法可以做到这一点。

或者:

  • 更改用户运行Web应用程序
  • 使用格式化时
  • 将当前线程的默认CultureInfo对象正确CultureInfo对象的区域设置
  • 逃离斜线

在格式化时提供CultureInfo对象:

@Html.DisplayFor(modelItem => item.EndDate.ToString("dd/MM/yyyy", CultureInfo.GetCulture("en-US"))) 

要设置默认CultureInfo对象:

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCulture("en-US"); 

为了逃避斜线,使用单引号:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd'/'MM'/'yyyy}")] 

注意,所有的代码在DateTime.ToString(string)结束或一个其超载,所以这是寻找线索的地方。