2013-07-15 60 views
0

我想向服务器日期时间相同的客户端显示服务器日期时间。此日期用于实现一些计划明智的功能。我做以下步骤:从服务器获取不同时区的服务器日期时间

  • 撷取的初始日期时间,只是计算时间 date.getTime()差异。

  • 使用GWT

  • 的定时器

当服务器时区和客户端时区都是相同的这是工作的罚款添加时间差异,以客户的datetime

  • 更新客户端的时间。但它给了我不同的时区计算错误。

    刚例如: 如果我的客户的时间是印度时区

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

    和 服务器时区为

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

    因此它计算错误的服务器日期。

    我怎样才能显示当前的服务器时间与服务器和客户端的不同时区而不经常服务器请求?

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

    编辑:

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

    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); 
    
  • +0

    请修改您的问题以提供更多详细信息。你有什么尝试?在客户端和服务器上都是纯Java吗?你如何传递他们之间的价值观?当你说“客户端”时,你的意思是客户端JavaScript在浏览器中 - 这是完全不同的。请准确。谢谢。 –

    +0

    '服务器和客户端意味着两台不同的机器'如果服务器机器有不同的时区,那么我需要在客户端机器上显示。战争以gwt技术形成。它是纯Java脚本。我编辑我的问题。 – iMBMT

    回答

    0

    你尝试一些像这样的东西吗?

    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 
    
    相关问题