如何将UTC时间转换为设备的本地时间?

时间:2014-05-22 14:54:36

标签: java android date

我从服务器获取一些数据,部分数据是日期。日期是UTC格式。我使用getRelativeTimeSpanString在相对时间向用户显示时间。

问题

如何将UTC时间转换为用户设备上设置的本地时区。

这就是我从服务器获取日期并使用relativeTimeSpanString

的方式
 Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH).
                                    parse("2014-05-21 12:21:41");
 Date currentDate = new Date();
 CharSequence cs =  DateUtils.getRelativeTimeSpanString(date.getTime(), currentDate.getTime(), DateUtils.SECOND_IN_MILLIS);

1 个答案:

答案 0 :(得分:1)

尝试这样的事情。它需要考虑时区以及夏令时。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
Date date = sdf.parse("2014-05-21 12:21:41");
TimeZone tz = TimeZone.getDefault();
int currentOffsetFromUTC = tz.getRawOffset() + (tz.inDaylightTime(date) ? tz.getDSTSavings() : 0);
String result = sdf.format(date.getTime() + currentOffsetFromUTC);