当前位置:  开发笔记 > 编程语言 > 正文

GWT中的客户端时区支持

如何解决《GWT中的客户端时区支持》经验,为你挑选了2个好方法。

我正在开发一个GWT应用程序,我需要支持以下场景:
服务器位于时区A中
客户端的浏览器设置为时区B
GWT应用程序配置为显示时区C中的日期/时间

由于GWT不支持Calendar,并且javascript中对时区的原生支持不存在,我想不出这个问题的一个漂亮而干净的解决方案.

你有没有做过类似的事情,或者你知道我可以用的任何好的工具吗?

谢谢!



1> Upgradingdav..:

根据我的经验,在处理gwt中的日期和时区时,以下最佳实践显着降低了复杂性和混淆:

    每当在应用程序中操作/存储日期时,将所有日期视为自GMT时区中的纪元以来的毫秒数.你可以将它们存储为字符串或int,它并没有真正有所作为.

    每当向最终用户显示日期时,请使用适当的时区格式化日期.

对于您的情况,当您在服务器上创建日期(时区A)时,将其转换为格林威治标准时间以来的毫秒数,然后再将其发送给客户端.在客户端上,使用DateTimeFormat(或编写您自己的日期格式化程序工具)将其转换为适当的时区B或时区C.



2> Fedearne..:

您无法更改GWT时区,因此所有java.util.Date都具有浏览器时区.您需要手动处理当前时区设置.

我看到3个选项:

    您自己管理时区转换.

    您可以像在本文中一样覆盖java.util.Date的序列化器/反序列化器.也许使用自定义的java.util.Date实现,它会覆盖getTimezoneOffset().这种方法需要重新编译GWT API!

    您可以通过扩展java.util.Date(如选项2中)或使用某个时区对象包装它来实现自己的Date .在此选项中,CustomFieldSerializer可能仍然有用,但不需要重新编译GWT API.

我更喜欢选项3.至少在GWT RPC可能有一天支持覆盖CustomFieldSerializer之前


有用的日期/时间格式提示.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有