0
我有一个时间戳从API来的格式如下:打印UTC时间在我的本地时区
yyyy-MM-dd'T'HH:mm:ss.SSSSSS
我想格式化它在自己的时区的用户(在Android)。这是我在做什么:
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我的设备。我在这里做错了什么?
谢谢
您的'df1.parse(timestampFromApi);'也使用PDT作为时区,因此它不知道此时间戳的时区是UTC。你首先需要'df1.setTimeZone(TimeZone.getTimeZone(“UTC”))。 – njzk2 2014-09-22 16:46:49
我有这样的转换大问题。请尝试使用来自org.joda.time的另一个日期实现,如DateTime。它比java.util.Date好得多。 – Tomek 2014-09-22 16:55:58
[解析日期字符串到java.Date时非法模式字符'T']的可能重复(http://stackoverflow.com/questions/2597083/illegal-pattern-character-t-when-parsing-a-date-字符串到Java的日期)。和[这](http://stackoverflow.com/questions/2201925/converting-iso-8601-compliant-string-to-java-utildate)和许多其他。发布前请先搜索StackOverflow。 – 2014-09-22 17:20:58