SimpleDateFormat.parse возвращает дату в разных часовых поясах - PullRequest
1 голос
/ 14 ноября 2011

Есть много проблем с датой и календарем на Android, и я поймал еще одну. Я должен разобрать несколько дат (магазины в виде строк) до даты. Я написал метод:

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 Ответ

2 голосов
/ 14 ноября 2011

Дания переходит с центральноевропейского стандартного времени (GMT + 1) на центральноевропейское летнее время (GMT + 2) 25 марта 2012 года. Если данные, с которыми вы работаете, не отражают изменения летнего времени, я бы предложил не предоставлять датский языковой стандарт для вашего SimpleDateFormat экземпляра:

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