我们的目标是在前端部分设置时区,以显示我们所需的时区上的日期/时间,并将日期字段,时间段等生成的日期显示在同一时区,但最后发送正确的服务器时间戳。
根据以下内容将全局时区设置为javascript应用程序并非易事:How to initialize javascript date to a particular timezone
解决方案推荐像momentjs这样的库,如果我错了,请纠正我,但这超出了范围,与sencha extjs不兼容。换句话说,由sencha extjs处理的模型和组件中的时间转换太多,我们无法绕过它们。
此外,还要努力覆盖此处的javascript语言的Date对象的核心功能:https://github.com/pligor/jstimezoner
虽然上述内容适用于与sencha extjs应用程序集成的简单案例,但结果却是灾难,不推荐使用。
是否有任何我们缺少的配置使Sencha ExtJS能够在我们选择的时区上显示和处理时间和日期?
请注意,我们始终向/从服务器发送/接收时间戳,因此没有时区问题。
答案 0 :(得分:0)
就像ExtJS不支持国际化一样,它不支持时区。
我们搜索了互联网,并偶然发现了MomentJS。但是当您发现时,您可以开始重写ExtJS中处理日期的几乎所有内容:您需要datetimewzonepicker
,type:'datetimewzone'
的模型字段,datetimewzonecolumn
等等等等类推。
当时,这似乎太费劲了,我们决定在每个请求中将所需的客户端时区发送到服务器会更容易,在{{1}中来回发送相应的datetime
格式化,并在服务器上执行有关时区的所有其他操作。我们现在对此决定感到遗憾,因为这样,我们无法在客户端进行计算(例如离线模式下的cordova应用程序)。
如果你精通ExtJS,编写所有这些瞬间处理ExtJS扩展应该不仅是干净的,可扩展的,而且更简单的方法。