gpt4 book ai didi

java - GWT时区问题

转载 作者:行者123 更新时间:2023-12-01 12:53:14 26 4
gpt4 key购买 nike

几天以来,我一直在与服务器和 GWT 客户端的不同时区问题作斗争。但无法取得任何成功。

场景是服务器位于 UTC 时区,假设客户端 A 位于 IST 时区。当客户端选择一个日期(带时间)时,我推送到服务器,但日期会自动更改为服务器的时区。我深入研究了这个问题,发现了多种解决方案,例如

  1. 创建自定义序列化程序(不知道该怎么做,找不到任何合适的示例)
  2. 将日期作为字符串传输到服务器并将其转换为服务器时区并存储。当获取数据时,再次从服务器时区转换为客户端本地时区。听起来不错。

所以我的查询是。

  1. 还有其他解决方案吗?
  2. 哪种管理方式最好?
  3. 有示例代码或链接吗?

最佳答案

只需在客户端将日期格式化为 UTC 格式,并将日期作为字符串传递给服务器,并将数据以 UTC 格式存储在数据库中。

在服务器端,一切都会很好,因为格式化日期将使用服务器的时区,这就是存储日期的时区。但是,在客户端,GWT 将使用客户端计算机的时区,因此可能存在差异。

示例代码:

DateTimeFormat f = DateTimeFormat.getFormat("MMM dd yyyy");
TimeZoneConstants t = (TimeZoneConstants) GWT.create(TimeZoneConstants.class)
TimeZone est = TimeZone.createTimeZone(t.americaNewYork());
int offset = est.isDaylightTime(date) ? +240 : +300;
TimeZone tz = TimeZone.createTimeZone(offset);
String date = f.format(user.getBirthDate(), est);
<小时/>

还有其他一些可能的解决方案,但这两个解决方案之一可能可以解决问题。

关于java - GWT时区问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24054410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com