Java SimpleDateFormat и проблема конвертации 19700101 - PullRequest
0 голосов
/ 22 июля 2011

У меня есть небольшая проблема с преобразованием даты в Java. Когда я помещаю 19700101 в SimpleDateFormat и затем вызываю getTime, я получаю -3600000. Я пишу тест:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date date = dateFormat.parse("19700101");
System.out.println(date.getTime());
System.out.println(dateFormat.format(new Date(0)));
System.out.println((new Date(0)).getTime());

Результат должен быть:

0
19700101
0

но я получил

-3600000
19700101
0

Мой вопрос: почему SimpleDateFormat возвращает -3600000 (20 ноября 1969 года)? Где я могу найти информацию об ошибках форматирования и конвертации?

1 Ответ

8 голосов
/ 22 июля 2011

Какой часовой пояс вы использовали? Я предполагаю, что вы использовали GMT + 1. Установите часовой пояс на «GMT», и вы должны получить ожидаемый результат.

Вы используете часовой пояс по умолчанию, например CEST (GMT + 1). Когда было 1970/01/01 00:00, 00:00 CEST было 1969/12/31 23:00: 00 000 GMT, что составляет -1 ч с 1970/01/01 или -3600000 мс.

...