Kendo Scheduler 中的英语时间格式
Posted
技术标签:
【中文标题】Kendo Scheduler 中的英语时间格式【英文标题】:English time-format in Kendo Scheduler 【发布时间】:2015-07-15 12:51:08 【问题描述】:我在我的 ASP.NET MVC5 网站中使用 Kendo Scheduler。
根据浏览器和电脑的文化设置,我从 Kendo 更改控件的语言(使用 kendo-culture-js 文件)
当我想将调度程序的语言更改为“英语”('en')时,时间格式很奇怪。
在下图中,您可以看到它。 而不是上午和下午:
在左侧的时间栏中,显示“A2”或“P2”。 在添加表单中,它使用“AM”和“PM”。应该是这样的...... 当我保存事件时,事件中的时间显示“A7”或“P7”。注意:我是荷兰人,所以我不知道这些东西是否有意义。
添加表单在我的 ASP.NET 网站中填充我的“事件”模型。 当我检查模型中的值时,它显示“AM”和“PM”。应该是这样的……
有谁知道为什么显示“A2”、“P2”、“A7”、“P7”?
提前致谢!
【问题讨论】:
Kendo 的 date/time 格式与 .NET 的格式几乎相同,但并不完全相同,(并且包括几个重要的遗漏:当 MVC 助手在服务器和客户端上使用相同格式时,这是一个真正的问题)。另请注意:这看起来像 American 格式。在英格兰,我们使用更理智的东西 (15/07/2015 13:58)。 每种情况下指定的格式字符串是什么? @Richard: startTime.toLocaleTimeString('en') 我使用了“toLocaleTimeString”,因为我希望时间和日期格式随着语言的变化而变化 【参考方案1】:来自评论:
startTime.toLocaleTimeString('en')
这将回退到 en-US 并使用 MM/dd/yyyy hh:mm tt
格式字符串。这将呈现为类似于07/15/2015 02:05 pm
。
然而,在客户端,这似乎被传递给 Kendo 的日期格式化函数,除一个字符外,所有字符都被视为文字。但是m
是没有前导零的分钟,所以被替换了。
要么做所有格式化服务器端或所有客户端。两者都做一点会产生这样的问题。不幸的是,由于 javascript 有限的日期处理和 Kendo 的限制,这很难做到。
【讨论】:
我不明白为什么“m”被替换为 2 而在事件中被替换为 7?m
是 Kendo 日期格式中的元字符(“分钟,从 0 到 59。”):没有代码我无法确定,但您的症状与通过的格式化日期一致kendo.toString
.
这是我显示时间的代码:kendo.toString(date, date.toLocaleTimeString('en'))
@ceuben 这是错误的:您将其格式化两次,使用toLocaleTimeString
的输出作为kendo.toString
的格式。但是toLocaleTimeString
返回的是格式化的日期,而不是要使用的格式。因此,“07/15/2015 02:05 pm”变为“07/15/2015 02:05 p5”,因为kendo.toString
看到“m”并将其替换为第一个参数中的分钟值。【参考方案2】:
我这样格式化日期:
kendo.toString(start, start.toLocaleTimeString('en'))
但它必须是:
kendo.toString(start.toLocaleTimeString('en'))
【讨论】:
以上是关于Kendo Scheduler 中的英语时间格式的主要内容,如果未能解决你的问题,请参考以下文章