我有一个UTC格式的时间戳,我想将它转换为本地时间,而不使用像TimeZone.getTimeZone("PST")
这样的API调用。你到底该怎么做呢?我一直在使用下面的代码,但没有太多成功:
private static final SimpleDateFormat mSegmentStartTimeFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(mSegmentStartTimeFormatter.parse(startTime));
}
catch (ParseException e) {
e.printStackTrace();
}
return calendar.getTimeInMillis();
示例输入值:[2012-08-15T22:56:02.038Z]
应返回与[2012-08-15T15:56:02.038Z]
等效的
发布于 2012-09-19 09:12:56
Date
没有时区,内部存储在协调世界时。仅当格式化日期时,才会应用时区校正。当使用DateFormat
时,它缺省为运行它的JVM所在的时区。根据需要使用setTimeZone
对其进行更改。
DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = utcFormat.parse("2012-08-15T22:56:02.038Z");
DateFormat pstFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
pstFormat.setTimeZone(TimeZone.getTimeZone("PST"));
System.out.println(pstFormat.format(date));
这将打印2012-08-15T15:56:02.038
请注意,我省略了PST格式中的'Z'
,因为它表示UTC。如果您只是使用Z
,那么输出将是2012-08-15T15:56:02.038-0700
https://stackoverflow.com/questions/12487125
复制相似问题