Между 27 октября 1968 года и 31 октября 1971 года было проведено судебное разбирательство по Британскому стандартному времени, которое, как я подозреваю, является причиной этой проблемы.
Здесь есть некоторые подробности процесса:
http://en.wikipedia.org/wiki/British_Summer_Time#Single.2FDouble_Summer_Time
Часовой пояс для Европы / Лондона 1 января 1970 года был британским стандартным временем (GMT + 1), поэтому, когда вы используете java.text.SimpleDateFormat
для анализа 01 января 00:00:00 по Гринвичу 1970, он генерирует правильное значение эпохи, равное ян 01 01:00:00 1970 в BST.
Затем, из-за дерьма java.util.Date
, когда вы звоните java.util.Date.toString()
, он использует часовой пояс по умолчанию для текущего локального с сейчас , который изменился на GMT, и вы получите Jan 01 01 : 00: 00 GMT 1970.