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

时间:2015-12-07 14:14:45

标签: c# asp.net-mvc

我正在开发一个大型的asp.net MVC Web应用程序。

给定消息的创建日期存储在(MS SQL)数据库中:

12/2/2015 6:08:24 PM

然而,不知何故,它作为上午/下午日期输出到网络浏览器:

public System.DateTime MessageSentDate { get; set; }

这是为什么?控制器方法或视图中似乎没有任何显式转换。模型值为:

This message was sent on: @message.MessageSentDate

然后在视图中:

TControlHack = class(TControl) end; //just to call DoMouseWheel

正如您所看到的,这里没有转换。那么为什么数据库中的24小时DateTime作为am / pm值输出。我只是错过了一些东西吗?

我想在没有am或pm的情况下输出24小时格式。是否有可以分配给整个应用程序的更改时间显示格式的配置值?

4 个答案:

答案 0 :(得分:3)

输出格式取决于您的文化的默认设置。有关相关问题,请参阅this post

答案 1 :(得分:1)

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

网络应用程序的区域设置在globalization的{​​{1}}部分中定义:

Web.config

通常, en-US 文化包含上午/下午指标。为了避免它,您可以使用另一种文化(例如 en-IE ),或者您可以在视图中定义没有am / pm指示符的格式,例如:

<globalization uiCulture="en-IE" enableClientBasedCulture="false" />

HH 表示24小时......小时。

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. 设置为 false 时,格式将不依赖于用户的浏览器设置(我的意思是enableClientBasedCulture HTTP标头)。

答案 2 :(得分:0)

在您的控制器中,您可以格式化日期:

CreatedDate.ToString("M/d/yyyy HH:mm");

这将为您提供24种军事时间格式。

答案 3 :(得分:-1)

我的猜测是,这是由于设置短日期和长日期格式的文化。我知道在winforms中这可以很容易地重写,但不确定MVC。