【问题标题】:DateTime is not in proper formatDateTime 格式不正确
【发布时间】:2013-07-17 21:10:30
【问题描述】:

我有一个属性如下:

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

当我使用时

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

我得到如下结果:

17.07.2013 

为什么会这样?

【问题讨论】:

  • +1 表示“请给我 teh codez....”
  • .NET DateTime 格式将斜杠替换为当前区域设置使用的日期分隔符。通常,这将是运行 asp.net 应用程序的用户的区域设置。
  • wr0K 我真的很无聊!这还没有解决:`(
  • 在格式化日期时更改文化信息:stackoverflow.com/a/4353241/3713
  • 您或您的用户是否使用 '.'作为日期分隔符?

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


【解决方案1】:

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

要么:

  • 为运行您的 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) 或其中一个重载结尾,因此您可以在这里寻找线索。

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2015-10-13
    • 1970-01-01
    • 2021-06-17
    • 2014-02-04
    相关资源
    最近更新 更多