我有一个日期对象,格式如下:
Sun 1月20日10:12:27 GMT + 02:00 2013
以上时间正确显示在microsoft outlook中:
Sun 1/20/2013 12:12 PM (这是GMT + 2>>客户时区的时间)
在尝试使用SimpleDateFormat
格式化日期对象时,使用以下代码显示在Outlook中:
SimpleDateFormat sdf=new SimpleDateFormat(
"EEE M/d/yyyy hh:mm a");
String receivedDate = sdf.format(email.getDateTimeReceived());
格式化的结果是:
Sun 1/20/2013 10:12 AM
因此缺少两小时的时区差异。
请告知如何解决这个问题,谢谢。
答案 0 :(得分:3)
您忘了告诉SimpleDateFormat
包含时区信息。
这样可以解决问题:
SimpleDateFormat sdf=new SimpleDateFormat(
"EEE M/d/yyyy hh:mm a zzzZ yyyy");
注意末尾的大写Z
以显示时间差异
这将打印:
Sun 1/20/2013 12:09 PM CET + 0100 2013
如果你需要GMT,你可以这样强迫:
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
现在它将打印:
Sun 1/20/2013 11:11 AM GMT + 0000 2013
如果您不需要AM / PM,请删除a
答案 1 :(得分:3)
如果我理解正确,您希望使用GMT时区格式化日期。
DateFormat dateFormat = new SimpleDateFormat("EEE M/d/yyyy hh:mm a");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String formattedDate = dateFormat.format(date);