Почему 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. Даты / времена до этой точки все еще могут быть представлены как отрицательные смещения от эпохи.

Другие вопросы по тегам