首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取具有不同时区的服务器日期时间

获取具有不同时区的服务器日期时间
EN

Stack Overflow用户
提问于 2013-07-15 17:03:51
回答 1查看 5.6K关注 0票数 0

我想向具有相同服务器日期时间状态的客户端显示服务器日期时间。此日期用于实现一些按计划进行的功能。我采取以下步骤:

  • 从服务器获取初始日期时间,并计算时间date.getTime()差异。
  • 将时间差添加到客户端日期时间
  • 使用GWT的计时器更新客户端时间

当服务器时区和客户端时区都相同时,它工作得很好。但它给了我错误的计算与不同的时区。

举个例子:如果我的客户时间是印度时区

((UTC+05:30)钦奈,加尔各答,孟买,新德里)

而服务器时区是

(UTC-08:00)太平洋时间(美国和加拿大)

所以它计算错误的服务器日期。

如何在不频繁发出服务器请求的情况下,以不同的服务器和客户端时区显示当前服务器时间?

注意:解决方案应该是通用时区。

编辑:

我使用RPC机制并将new Date().getTime()从服务器返回到客户端。在成功方法中,客户端代码:

代码语言:javascript
运行
复制
final String serverDate;
            final DateTimeFormat fmt = DateTimeFormat.getFormat(dateFormat);
            if(dateFormat!=null){
                serverDate = fmt.format(result.getServerDate());
            }else{
                serverDate = result.getServerDate().toString();
            }
            setDateTime(serverDate,widget);
            final long dateDiff = result.getServerDate().getTime()-new Date().getTime();
            Timer timer = new Timer() {
                @Override
                public void run() {
                    long currenrDate=new Date().getTime()+dateDiff;
                    Date date=new Date(currenrDate);
                    String serverDate = fmt.format(date);
                    setDateTime(serverDate,widget);
                    WorkFlowSessionFactory.putValue(WorkFlowSesisonKey.SERVER_DATE_TIME,date);  

                }
            };
            timer.scheduleRepeating(10000);
EN

回答 1

Stack Overflow用户

发布于 2013-07-15 17:39:05

你试过像这样的东西吗?

代码语言:javascript
运行
复制
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    f.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date date=new Date();
    System.out.println(f.format(date));   // current UTC time

    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.HOUR_OF_DAY, 5);
    cal.add(Calendar.MINUTE, 30);
    System.out.println(f.format(cal.getTime()));// current client side time in UTC

    Calendar cal2 = Calendar.getInstance();
    cal2.setTime(date);
    cal2.add(Calendar.HOUR_OF_DAY, -8);
    cal2.add(Calendar.MINUTE, 00);
    System.out.println(f.format(cal2.getTime()));// current server side time in UTC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17659750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档