我正在开发一个大型asp.net MVC web应用程序。
给定消息的创建日期存储在(MS SQL)数据库中,如下所示:
2015-12-02 18:08:24.383
然而,不知何故,它被输出到网络浏览器作为上午/下午的日期:
12/2/2015 6:08:24 PM
为什么会这样?控制器方法或视图中似乎没有任何显式的转换。模型值为:
public System.DateTime MessageSentDate { get; set; }
然后在视图中:
This message was sent on: @message.MessageSentDate
正如你所看到的,这里没有转换。那么,为什么数据库中的24小时DateTime被输出为am/pm值呢。我只是错过了什么吗?
我想在没有上午或下午的情况下输出24小时格式。是否有可以分配的配置值来更改整个应用程序的时间显示格式?
输出格式取决于区域性的默认设置。有关相关问题,请参阅本文。
通常值的输出格式取决于区域设置。
web应用程序的区域设置在Web.config
:的globalization
部分中定义
<globalization uiCulture="en-IE" enableClientBasedCulture="false" />
通常,en-US文化包括上午/下午指标。为了避免这种情况,您可以使用另一种区域性(e.e.en-IE),或者您可以在视图中定义没有am/pm指示符的格式,比如这里:
This @dt will be shown with default format.
But this @Html.FormatValue(dt, "{0:HH:mm:ss}") will be shown without am/pm.
Also, you can use @(dt.toString("HH:mm:ss")). Parentheses can help to
Razor to parse complex code.
HH表示24小时。。。小时。
当enableClientBasedCulture
设置为false时,格式将不取决于用户的浏览器设置(我指的是Accept-Language
HTTP标头)。
在您的控制器中,您可以这样格式化日期:
CreatedDate.ToString("M/d/yyyy HH:mm");
这将为您提供24军事时间格式。
我的猜测是,这是由于设置短日期和长日期格式的区域性造成的。我知道在winforms中,这很容易被推翻,但对MVC不太确定。