我从服务器获取一些数据,部分数据是日期。日期是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);
答案 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);