SimpleDateFormat.parse在不同的时区中返回Date

时间:2011-11-14 14:57:31

标签: android date simpledateformat

Android上的日期和日历有很多问题,而我又抓到了另一个问题。我必须将几个日期(存储为字符串)解析为Date。我写了方法:

private Date getDateFromString(String dateStr, String timeStr) {
 Date dateObj = null;
 SimpleDateFormat dateFormater = new SimpleDateFormat("dd. MMM yyyy HH:mm", new Locale("da", "DK"));
 dateFormater.setTimeZone(TimeZone.getTimeZone("GMT+01:00"));
  try {
   dateObj = dateFormater.parse(dateStr + " " + timeStr);
  } catch (ParseException parseExc) {
   parseExc.printStackTrace();
 }
 return dateObj;
}

它可以工作,但是当我尝试记录结果时,我看到了下一个输出:

11-14 15:49:03.223: D/my date(560): Sun Mar 04 08:00:00 GMT+01:00 2012
11-14 15:49:03.223: D/my date(560): Sun Mar 11 08:00:00 GMT+01:00 2012
11-14 15:49:03.233: D/my date(560): Sun Mar 18 08:00:00 GMT+01:00 2012
11-14 15:49:03.233: D/my date(560): Sun Mar 25 08:00:00 GMT+02:00 2012
11-14 15:49:03.243: D/my date(560): Sun Apr 01 08:00:00 GMT+02:00 2012

即。一些日期被解析为GMT + 1时区,一些日期被转换为GMT + 2。如何获取所有日期到同一时区?

1 个答案:

答案 0 :(得分:2)

丹麦于2012年3月25日从中欧标准时间(GMT + 1)切换到中欧夏季时间(GMT + 2)。如果您使用的数据不能反映这些夏令时变化,我建议不要提供您SimpleDateFormat实例的丹麦语语言环境:

SimpleDateFormat dateFormater = new SimpleDateFormat("dd. MMM yyyy HH:mm");