日期时间格式不适用于斜杠Kendo UI

时间:2013-03-25 12:57:08

标签: kendo-ui

我的网络应用程序支持多种日期时间格式,即yyyy-MM-ddyyyy.MM.dddd/MM/yyyyMM/dd/yyyy。两个第一个完美地工作,但是,当我使用其他两种格式时,斜线在初始打印中被短划线替换,这使得它们无法验证。但是,如果我选择一个日期,它会以正确的(选择的)格式出现。

我正在使用文化sv-SE。

2 个答案:

答案 0 :(得分:3)

怀疑(没有Kendo UI经验,但有其他日期/时间API经验)“/”被视为“特定于文化的日期分隔符”。如果你想要“正确的正斜线,不管文化”,你可能需要逃避它。

如何执行转义取决于库,但通常只使用引号,例如

dd'/'MM'/'yyyy
MM'/'dd'/'yyyy

答案 1 :(得分:0)

作为Jon notes,在他的回答中,/是.NET custom date formats中的特殊字符。

使用Kendo时,这会让人感到困惑,因为它不会将/用作special character

使用单独的格式字符串客户端和服务器端应该是答案,但不幸的是在Telerik UI for MVC(在客户端使用Kendo)单个格式字符串用于客户端和服务器端以及用于Kendo的MVC帮助程序

例如,在日期格式为" dd-MM-yyyy"的服务器上(在Windows区域设置中设置)和视图模型:

    [Display(Name="Date")]
    [UIHint("Date")]
    [DisplayFormat(DataFormatString = Constants.DateFormat, ApplyFormatInEditMode = true)]
    public DateTime Date { get; set; }

Constants.DateFormat是" dd / MM / yyyy")然后有一个编辑器模板(" Date.cshtml"):

@(Html.Kendo().DatePickerFor(m => m)

导致初始日期显示" 29-05-2015"和JavaScript错误,因为它无法解析。

作为使用

的工作
@(Html.Kendo().DatePickerFor(m => m)
              .ParseFormats(new[] { "dd-MM-yyyy", Constants.DateFormat}))

生成的HTML中的格式是错误的,但JavaScript至少能够理解它。 (当然,这应该使用DateTimeFormatInfo.DateSeparator动态构建替代格式。)