0

サーバーの日時と同じステータスを持つクライアント側にサーバーの日時を表示したい。この日付は、スケジュールに関する機能を実現するために使用されます。次の手順を実行します。

  • サーバーから最初の日時を取得し、 date.getTime()時差を計算しました。

  • クライアントの日時に時差を追加する

  • GWT の Timer を使用してクライアント時刻を更新する

サーバーのタイムゾーンとクライアントのタイムゾーンの両方が同じ場合、正常に機能しています。しかし、タイムゾーンが異なると間違った計算が行われます。

例:クライアントの時間がインドのタイムゾーンの場合

((UTC+05:30) チェンナイ、コルカタ、ムンバイ、ニューデリー)

サーバーのタイムゾーンは

((UTC-08:00) 太平洋時間 (米国およびカナダ))

そのため、サーバーの日付が間違って計算されます。

サーバーリクエストを頻繁に行わずに、サーバーとクライアントの異なるタイムゾーンで現在のサーバー時間を表示するにはどうすればよいですか?

注: ソリューションはユニバーサル タイムゾーンにする必要があります。

編集:

new Date().getTime()私は RPC メカニズムを使用し、サーバーからクライアントに戻りました。そして成功の方法では、クライアント側のコード:

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);
4

1 に答える 1

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
于 2013-07-15T17:39:05.637 に答える