2013-07-17 222 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)結束或一個其超載,所以這是尋找線索的地方。