设置正确的日期时间格式

时间:2018-04-03 14:04:02

标签: c# asp.net-mvc datetime kendo-ui format

我在c#中有一个多语言应用程序,带有一个下拉字段来选择项目的持续时间

这是英文的外观

enter image description here

这就是它在德语中的表现

enter image description here

下拉列表应该总是像德语中那样。

这是代码:

/// <summary>
    /// Gets or sets the duration.
    /// </summary>
    [UIHint("CustomGridTime")]
    public DateTime Duration { get; set; }

这是模型中的属性

private static WorkTimesViewModel PrepareModel(WorkTimesViewModel model)
    {
        var newDateTime = DateTime.UtcNow.Date;
        newDateTime = newDateTime.AddHours(model.Duration.Hour);
        newDateTime = newDateTime.AddMinutes(model.Duration.Minute);
        newDateTime = newDateTime.AddSeconds(model.Duration.Second);
        model.Duration = newDateTime;
        return model;
    }

这是我设置值的地方:

np.log

有人能帮助我吗?

最好的问候和Thx

2 个答案:

答案 0 :(得分:1)

您可以使用JavaScript设置Kendo的文化。通过在视图中添加文本,在_Layout.cshtml文件中全局设置文化或在本地设置文化。它应该将正确的格式应用于您的TimePicker输入。

<script type="text/javascript">
    kendo.culture("de-DE");
</script>

有关更多信息,请参阅Kendo UI文档: https://docs.telerik.com/kendo-ui/framework/globalization/overview

OR

在“Views&gt; [WorkTimes?]&gt; EditorTemplates”文件夹中创建名为CustomGridTime.cshtml的Editor Template。如果EditorTemplates文件夹不存在,请创建它。

@model DateTime
@Html.Kendo().TimePickerFor(m => m).Format(System.Globalization.CultureInfo.GetCultureInfo("de-DE").DateTimeFormat.ShortTimePattern)

然后更改您的网格列。

columns.Bound(p => p.Duration).Title(Html.LabelFor(m => m.Dauer).ToString()).Format("{0:" + System.Globalization.CultureInfo.GetCultureInfo("de-DE").DateTimeFormat.ShortTimePattern + "}").EditorTemplateName("CustomGridTime").Width(80);

答案 1 :(得分:0)

你可以像这样强制当前Thread的文化:

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");

有关详细信息,请参阅MSDN文档:https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.110).aspx