DateTime格式文化 - 如何改变它?

时间:2013-07-30 09:31:50

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

web.config中使用此行,2.440.5等数字正常工作 - 通常是ViewModels中的所有小数。
我在此处找到了解决方案,如果我想在viewmodel中有小数,我必须像这样更改globalization

<globalization culture="en-us" uiCulture="pl-PL" />

但现在日期格式为6/19/2013 10:04:18 PM - 我想要欧洲格式,例如19-6-2013 22:04:18。始终自动。

当我将culture更改为pl-PL时,日期格式正确,但文本框中的小数不起作用..(当数字为十进制时返回0)。

如何使用欧洲日期时间格式和工作小数?

此致

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,因为我来自罗马尼亚。这是我的解决方案:

观看/共享/ DisplayTemplates / Date.cshtml (创建文件夹和文件,如果不存在)

@model Nullable<DateTime>

@{
    DateTime dt = DateTime.Now;
    if (Model != null) {
        dt = (System.DateTime)Model;
    }
    @dt.ToString("dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
}

基本上,无论何时使用Html.Display或Html.DisplayFor作为DateTime(在我的示例中为可空),它都将根据此模板进行渲染。您还可以设置编辑器模板(我使用jquery ui的DatePicker)。您可以阅读有关MVC模板here

的更多信息

Layout.cs中引用的脚本(因此可在所有视图中使用)

$.validator.methods.number = function (value, element) {
    value = floatValue(value);
    return this.optional(element) || !isNaN(value);
}
$.validator.methods.range = function (value, element, param) {
    value = floatValue(value);
    return this.optional(element) ||
        (value >= param[0] && value <= param[1]);
}

function floatValue(value) {
    return parseFloat(value.replace(",", "."));
}

这是用于修复文本框等中的小数点问题。

我不是说这是最好的解决方案(至少在后一部分,实际上替换点和逗号可能看起来是原始的),但它完成了工作。我还提到我使用

<globalization enableClientBasedCulture="false" culture="ro" uiCulture="ro" />

,从而迫使文化(我永远不必以不同的格式显示日期或货币 - 或任何十进制数字)。