我正在尝试将GMT时间转换为我当前的时区(确切地说是GMT-7,加利福尼亚州),但它落后了1小时。
以下是我从以下位置检索值的字符串示例:
2014-05-07T02:02:04.316Z
所以我比正确的时间短了1小时(下午6:02而不是下午7:02)。这是为什么?
private Calendar setTimeStamp(String s) {
int year = Integer.parseInt(s.substring(0, 4));
int month = Integer.parseInt(s.substring(5, 7)) - 1;
int day = Integer.parseInt(s.substring(8, 10));
int hour = Integer.parseInt(s.substring(11, 13));
int minute = Integer.parseInt(s.substring(14, 16));
Calendar gmtCal = Calendar.getInstance();
gmtCal.set(year, month, day, hour, minute);
long gmtTimeInMillis = gmtCal.getTimeInMillis();
long currentTimeInMillis = gmtTimeInMillis + TimeZone.getDefault().getRawOffset();
Calendar adjustedCal = Calendar.getInstance(TimeZone.getDefault());
adjustedCal.setTimeInMillis(currentTimeInMillis);
return adjustedCal;
}
答案 0 :(得分:0)
这一小时的差异可能是由于夏令时造成的。 Clock changes for California
但是,您可以参考TimeZone类中的 getDSTSavings()函数来获取您所在时区的当前DST偏移量。