【问题标题】:Stop Kendo from converting times to local timezone阻止 Kendo 将时间转换为本地时区
【发布时间】:2017-03-15 19:55:38
【问题描述】:

如何防止 Kendo 将我传递的 DateTime 对象转换为用户的本地时区?

我正在使用Kendo UI 和我的MVC 项目。在我看来,我可以使用C# 打印出日期/时间,只需执行以下操作:

@Model.EndDate.ToString("MMMM dd, yyyy hh:mm tt)

但是,我的项目的某些部分正在使用 Kendo 模板,这需要我使用 Kendo 的 .toString() 方法来正确格式化日期。问题在于它将它转换为浏览器的本地时区,我不希望它这样做。 这是我使用剑道显示日期/时间的方式:

<script id="DetailTemplate" type="text/x-kendo-template">
    #= kendo.toString(EndDate, "g") #
</script>

根据我的阅读,默认情况下更改时区的实际上是 JavaScript 本身。有没有办法可以在使用日期之前解析日期,将它们锁定在原来的时区?

【问题讨论】:

  • 日期没有时区,它们是 UTC。但是,内置的 toString 在构建用于显示的字符串时使用主机时区。您如何存储原始时区?
  • @RobG 感谢您提供的信息,我没有意识到他们没有存储时区。我决定只使用 moment.js 来指定我想要日期的时区。
  • 支持特定时区相当容易,但夏令时变得更有趣。如果您对图书馆感到满意,那也没关系。

标签: javascript date datetime kendo-ui


【解决方案1】:

为了解决这个问题,我决定只使用moment.jsmoment-timezone.js

我希望我所有的时间都是 ET,所以我的剑道模板现在看起来像这样:

<script id="DetailTemplate" type="text/x-kendo-template">
    #: moment(EndDate).tz("America/New_York").format("M/DD/YYYY hh:mm A") #
</script>

【讨论】:

    猜你喜欢
    • 2022-12-12
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2018-01-17
    • 2014-10-05
    相关资源
    最近更新 更多