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 中的英语时间格式的主要内容,如果未能解决你的问题,请参考以下文章

Kendo Scheduler DatePicker 事件

Kendo Scheduler 防止编辑/破坏某些事件

Kendo UI Scheduler 禁用删除确认或更改其内容

Kendo Scheduler 事件在取消编辑后消失

如何设计 Kendo Scheduler 的周末

Kendo UI Scheduler:营业时间?