サーバーの日時と同じステータスを持つクライアント側にサーバーの日時を表示したい。この日付は、スケジュールに関する機能を実現するために使用されます。次の手順を実行します。
サーバーから最初の日時を取得し、
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);