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