剑道日期时间选取器不处理 UTC 偏移量
Kendo DateTimePicker Not Handling UTC Offset
我们使用 Kendo datetimepicker,使用 AngularJS 指令实现:
<input type="text" kendo-date-time-picker k-ng-model="TheDateModel">
其中:日期模型 = 2016-02-15 20:58:24.0000000 +00:00
我在CST时区,与GMT相差-6小时。日期时间选择器的当前结果显示时间为晚上 8:58,但我的预期结果是下午 2:58。
我到底做错了什么?
免责声明:我在剑道UI团队工作
Kendo UI 日期选取器在内部使用 JavaScript Date 对象来保存选定的日期值。您可能知道,它始终使用本地(浏览器(时区。我们也试图在我们的文档中解释这个警告:
- JavaScript 日期对象 - 基础知识
由于此默认行为,小组件将使用已转换的日期值(使用应用的本地时区(。该小部件不会操作值时区,因为它没有足够的信息来执行此操作。
溶液
在这种情况下,最好的方法是在输入 DatePicker 小部件之前手动转换 Date 字符串(如您提到的"2016-02-15 20:58:24.0000000 +00:00"(。例如,这里有一种可能的方法可以做到这一点:
- http://dojo.telerik.com/EyuRA
请注意如何在 loadData
方法中分析值,然后进行调整。需要在其应用程序中处理不同 TZ 的开发人员应该做类似的事情。
我一直在这条路上,不得不实现这个:
http://www.telerik.com/support/code-library/using-utc-time-on-both-client-and-server-sides
所以我找到了解决问题的方法。首先为了清楚起见,很抱歉提供错误信息,但我的日期从服务器中下来为 2016-02-15T20:58:24.0000000+00:00 - 添加 T 并删除所有空格。
所有需要做的是将 k-parse-formats 属性添加到指令中,如下所示:
<input type="text" kendo-date-time-picker k-parse-formats=['yyyy-MM-ddTHH:mm:sszzz'] k-ng-model="TheDateModel">
Boom,考虑偏移量和您当前的时区,并正确解析和显示日期和时间。请注意,当您指定自己的解析格式时,要包括日期可能的所有可能格式。
例如,然后我遇到了一个问题,即我的日期的毫秒数大于 0:2016-02-15T20:58:24.1234567+00:00。这再次破坏了日期时间选择器。更简单的修复:刚刚将我的解析格式更改为:yyyy-MM-ddTHH:mm:ss.fffffffzzz。确保 f 的数大于或等于可能的毫秒数。
<input type="text" kendo-date-time-picker k-parse-formats=['yyyy-MM-ddTHH:mm:ss.fffffffzzz'] k-ng-model="TheDateModel">
- 可以't让我的if语句处理js中的html表单输入
- keyup事件处理程序更改焦点不适用于快速键入
- 如何使用jquery处理php循环通过元素
- angular.js没有'无法在PhoneGap中处理视图标记
- j查询utc offSets的时差
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 提示使用服务器端事件处理程序激活JavaScript
- javascript:如何在antlr生成的Lexer中进行错误处理
- 如何编写一个具有公共标头的批处理
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 如何处理node.js节点mongodb中的连接和查询队列
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 如何处理10页以上的静态页眉/页脚
- 将事件处理程序绑定到任何可能的事件
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- 以 UTC 格式的 SQL 处理日期/时间
- 剑道日期时间选取器不处理 UTC 偏移量
- MomentJS和UTC日期处理
- 在处理阿拉伯语言环境时,正确格式化本地UTC日期字符串
- javascript将从服务接收到的日期作为UTC格式处理