为什么数据库中的24小时DateTime值显示为am/pm

本文关键字:显示 am pm DateTime 数据库 24小时 为什么 | 更新日期: 2023-09-27 18:26:02

我正在开发一个大型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小时格式。是否有可以分配的配置值来更改整个应用程序的时间显示格式?

为什么数据库中的24小时DateTime值显示为am/pm

输出格式取决于区域性的默认设置。有关相关问题,请参阅本文。

通常值的输出格式取决于区域设置。

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不太确定。