Java 将UTC时间转换为电话本地时间
我正在尝试从服务器UTC时间获取本地时间。我从服务器上获取UTC时间——我想让每一部Android手机,无论是在加利福尼亚还是在中国,都能正确使用UTC时间 这就是我现在正在使用的代码——但是它不起作用 我从服务器得到的时间是Java 将UTC时间转换为电话本地时间,java,android,datetime,rest,Java,Android,Datetime,Rest,我正在尝试从服务器UTC时间获取本地时间。我从服务器上获取UTC时间——我想让每一部Android手机,无论是在加利福尼亚还是在中国,都能正确使用UTC时间 这就是我现在正在使用的代码——但是它不起作用 我从服务器得到的时间是 "2010-08-17 19:41:13.0" 我用来获取差异(以秒为单位)的代码如下: public static long getSecondsDifference(Timestamp timeStamp) { final Calendar calendar
"2010-08-17 19:41:13.0"
我用来获取差异(以秒为单位)的代码如下:
public static long getSecondsDifference(Timestamp timeStamp) {
final Calendar calendar = Calendar.getInstance(Locale.getDefault());
int refrenceOffset = TimeZone.getDefault().getOffset(timeStamp.getTime());
final long referenceSeconds = (timeStamp.getTime() + refrenceOffset) / 1000;
final long currentTimeSeconds = (calendar.getTimeInMillis()) / 1000;
final long differenceMinutes = (currentTimeSeconds - referenceSeconds) / 60;
return differenceMinutes;
}
时间戳来自java.sql.timestamp包
现在我所在的时间是11:50AM——该方法返回给定的服务器时间是-53分钟前(显然是做错了:)这与夏令时有关。因为我住的是太平洋夏令时(PDT),所以我必须补偿
public static long getSecondsDifference(Timestamp timeStamp) {
final Calendar calendar = Calendar.getInstance(Locale.getDefault());
int offset = TimeZone.getDefault().getOffset(timeStamp.getTime());
if (TimeZone.getDefault().inDaylightTime(Calendar.getInstance().getTime())) {
offset = offset - TimeZone.getDefault().getDSTSavings();
}
final long referenceSeconds = (timeStamp.getTime() + offset) / 1000;
final long currentTimeSeconds = (calendar.getTimeInMillis()) / 1000;
final long differenceSeconds = (currentTimeSeconds - referenceSeconds);
return differenceSeconds;
}
我会在每一步检查每个值。有些东西不是你想象的那样。