我从服务器
获取此字符串为Date2016-06-11T11:14:57.000Z
由于它是UTC,我想转换为我当地的时间。
SimpleDateFormat mFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
SimpleDateFormat endFormat = new SimpleDateFormat("hh:mm a");
mFormat.setTimeZone(TimeZone.getTimeZone("GMT+5:00"));
Date date = mFormat.parse(mBooking.startTime);
但是,日期转换为2:00AM
现在我不明白为什么11am
转换为2:00AM
我做错了什么?
答案 0 :(得分:3)
因为您没有为每个SimpleDateFormat
正确设置时区,所以mFormat
确实应设置为UTC
和endFormat
设置为GMT + 5
,此处是你应该做的:
SimpleDateFormat mFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
// Set UTC to my original date format as it is my input TimeZone
mFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = mFormat.parse("2016-06-11T11:14:57.000Z");
SimpleDateFormat endFormat = new SimpleDateFormat("hh:mm a");
// Set GMT + 5 to my target date format as it is my output TimeZone
endFormat.setTimeZone(TimeZone.getTimeZone("GMT+5:00"));
System.out.println(endFormat.format(date));
<强>输出:强>
04:14 PM