打印本地时区的UTC时间



我有一个来自API的时间戳,格式如下:

yyyy-MM-dd'T'HH:mm:ss.SSSSSS

我想为用户在自己的时区(在安卓系统上)格式化它。这就是我正在做的:

String timestampFromApi = "...";
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH);
Date date = df1.parse(timestampFromApi);
DateFormat df2 = new SimpleDateFormat();
Log.v(TAG, "In your timezone: " + df2.format(date));

但这会以UTC打印时间。例如,如果时间戳发生在UTC时间下午4点,而我在PDT中,结果是它仍然打印"下午4点"。

我检查了正在使用的时区:

df2.getTimeZone()

它确实为我的设备打印出PDT。我做错了什么?

感谢

你走在了正确的轨道上。你从服务器上得到了UTC时间,但现在你只需要在格式化时计算本地偏移量。试试这样的东西:

private String formatTime(String timestampFromApi){
    SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH);
    df1.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date date = df1.parse(timestampFromApi);
    Log.v(TAG, "In your timezone: " + df1.format(getAdjustedTime(date.getTime())));
}
private Date getAdjustedTime(long utcDate){
    return new Date(utcDate + TimeZone.getDefault().getOffset(new Date().getTime()));
}

getAdjustedTime()方法将基于与本地TimeZone的UTC偏移量创建新的Date对象。

最新更新