【问题标题】:Convert UTC time to local time java Android将UTC时间转换为当地时间java Android
【发布时间】:2015-09-26 22:12:01
【问题描述】:

我正在从 json 服务中检索一些值,检索到的日期时间值以 UTC 格式存储。 我尝试了很多示例代码将日期时间值转换为用户本地时区,但转换后我仍然得到相同的值。

这是我实际拥有的:(从其他帖子复制)

String sJsonDate = "2015-07-08T12:08:13.0625+00:00";

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
try {
    Date localDateTime = simpleDateFormat.parse(sJsonDate);

} catch (ParseException e) {
    e.printStackTrace();
}

结果值(localDateTime)与原始值相同。 我在巴拉圭(GMT-4),结果值需要减去一小时的差异,如下所示:(“2015-07-08 07:13:25”)(这些值存储在阿根廷)

请帮忙!

【问题讨论】:

标签: java android datetime utc


【解决方案1】:

我找到了解决方案,我们正在使用夏令时,所以我不得不将结果日期时间减去一小时。

所以,我把代码分享给别人:

public Date getDateInTimeZone(Date currentDate, String timeZoneId) {
    TimeZone timeZone = TimeZone.getTimeZone(timeZoneId);

    Date localDateTime = new Date(currentDate.getTime() + timeZone.getOffset(currentDate.getTime()));
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(localDateTime.getTime());
    if (timeZone.useDaylightTime()) {
        // time zone uses Daylight Saving
        cal.add(Calendar.MILLISECOND, timeZone.getDSTSavings() * -1);// in milliseconds
    }

    return cal.getTime();
}

用法:

String sDate = "2015-07-08T12:08:13.0625+00:00";
try {    
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
            Date theDate = simpleDateFormat.parse(sDate);
            Date localDateTime = getDateInTimeZone(theDate, TimeZone.getDefault().getID());
        } catch (ParseException e) {
            e.printStackTrace();
        }

【讨论】:

    猜你喜欢
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2023-03-26
    • 2021-03-20
    • 2018-11-12
    • 2018-07-27
    • 2023-04-09
    相关资源
    最近更新 更多