【问题标题】:English time-format in Kendo SchedulerKendo 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”,因为我希望时间和日期格式随着语言的变化而变化

标签: javascript kendo-ui asp.net-mvc-5 culture kendo-scheduler


【解决方案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'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多