Почему Epoch не потерпела неудачу при использовании java.util.date?
В следующем коде я конвертирую java.util.date в java.sql.date. Я сбит с толку тем, что, давая дату до эпохи, как указано ниже, и я также использовал метод date.getTime(), который дает миллисекунды от эпохи, он дал мне правильное время, как показано в результатах. Мои вопросы: почему это не сработало (как я и предполагал)? Почему это дало правильное время?
Код:
SimpleDateFormat sdf2 = new SimpleDateFormat("dd-M-yyyy hh:mm:ss"); //defining format
String dateOfAdmissionInString = "22-01-1966 05:03:33";
Date utilDateOfAdmission = sdf2.parse(dateOfAdmissionInString);
java.sql.Timestamp sqlDateOfAdmission = new Java.sql.Timestamp(utilDateOfAdmission.getTime());
System.out.println("utilDateOfAdmission:" + utilDateOfAdmission);
System.out.println("sqlDateOfAdmission:" + sqlDateOfAdmission);
Результат:
utilDateOfAdmission: Sat Jan 22 05:03:33 PKT 1966
sqlDateOfAdmission: 1966-01-22 05:03:33.0
2 ответа
Решение
Мои вопросы, почему это не провалилось
Потому что количество миллисекунд с начала эпохи может быть отрицательным, что указывает дату / время до 1 января 1970 года в полночь по Гринвичу.
Бесплатный пример: дата рождения Элвиса:
Date dt = new Date(-1103932800000L);
System.out.println(dt.toString());
Эпоха просто указывает, где находится значение ZERO. Даты / времена до этой точки все еще могут быть представлены как отрицательные смещения от эпохи.