我们如何在 Sencha ExtJS 版本 6.0.2 中全局设置我们想要使用的时区?

How could we set globally in Sencha ExtJS version 6.0.2 the timezone that we want to use?

我们的目标是在前端部分设置时区,以在我们想要的时区显示 dates/times,并让日期字段、时间字段等生成的日期位于同一时区,但在最后将正确的时间戳发送到服务器。

根据以下内容,将时区全局设置为 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 能够显示和处理我们选择的时区的时间和日期?

请注意,我们总是 send/receive 服务器的时间戳 to/from,因此那里没有时区问题。

就像 ExtJS 并不真正支持国际化一样,它也不支持时区。

我们在网上搜索了一下,也偶然发现了 MomentJS。但是正如您发现的那样,您随后可以开始重写 ExtJS 中处理日期的几乎所有内容:您需要一个 datetimewzonepicker、一个 type:'datetimewzone' 的模型字段、一个 datetimewzonecolumn 等等第四。

那时候,这似乎太费力了,我们决定在每个请求中将所需的客户端时区发送到服务器会更容易,在[中来回发送相应的 datetime =14=] 格式,并在服务器上执行与时区有关的所有其他操作。我们现在对这个决定感到遗憾,因为那样的话,我们就不可能在客户端进行计算(例如离线模式下的 cordova 应用程序)。

如果您精通 ExtJS,编写所有这些时刻处理 ExtJS 扩展应该不仅是干净和可扩展的,而且是更简单的方法。