2013-03-25 141 views
0

我的web应用程序支持多种日期时间格式,即yyyy-MM-dd,yyyy.MM.dd,dd/MM/yyyyMM/dd/yyyy。然而,当我使用其他两种格式时,两个第一个完美地工作,在最初的打印中用斜杠代替斜杠,这使得它们验证失败。但是,如果我选择一个日期,则会显示正确的(选择的)格式。日期时间格式不能使用斜线Kendo UI

我正在使用文化sv-SE。

回答

2

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

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

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

正如他的回答Jon notes这是关于/是在.NET custom date formats一个特殊字符。

与Kendo一起工作时,这很令人困惑,因为它没有使用/作为special character

使用单独的格式字符串的客户端和服务器端应该是答案,但遗憾的是在Telerik UI for MVC(其中客户端上使用剑道)单一格式字符串用于客户端和服务器端与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动态地构建替代格式。)