我想向具有相同服务器日期时间状态的客户端显示服务器日期时间。此日期用于实现一些按计划进行的功能。我采取以下步骤:
date.getTime()
差异。当服务器时区和客户端时区都相同时,它工作得很好。但它给了我错误的计算与不同的时区。
举个例子:如果我的客户时间是印度时区
((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);
发布于 2013-07-15 17:39:05
你试过像这样的东西吗?
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
https://stackoverflow.com/questions/17659750
复制相似问题