Какое минимальное значение даты в Java?
Минимальная дата в Java
Ответ 1
Не забывайте, что конструктор Date с радостью принимает отрицательные значения.
Date date = new Date(Long.MIN_VALUE);
возвращает
Вс Дек 02 22:47:04 BDT 292269055
Я предполагаю, что о времени Big Bang динозавров:)
ИЗМЕНИТЬ
Как ответил martin clayton, вы можете использовать класс Calendar для проверки эры. Это будет выводить 0, что означает BCE:
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date(Long.MIN_VALUE));
System.out.println(calendar.get(Calendar.ERA));
Ответ 2
Если вы говорите о java.util.Date как временную метку, вы можете сделать это
Date d = new Date(0L), и вы увидите, что это означает Thu Jan 01 01:00:00 GMT 1970
Как tulskiy указал, что можно передать отрицательное значение конструктору Date. Если мы это сделаем и используем формат даты, который включает в себя эпоху, мы можем видеть:
Date d = new Date(Long.MIN_VALUE);
DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy G HH:mm:ss Z");
System.out.println(df.format(d));
отображает: вс, 2 дек. 292269055 до н.э. 16:47:04 +0000
Ответ 3
Другие ответы могут быть правильными, но использовать устаревшие классы.
java.time
Старые классы даты и времени (java.util.Date/.Calendar и т.д.) Были вытеснены платформой java.time, встроенной в Java 8 и более поздние версии.
Классы java.time вдохновлены Joda-Time, определенными JSR 310, расширенными проектом ThreeTen-Extra, перенесенным на Java 6 и 7 проектом ThreeTen-Backport и адаптированным для Android в проекте ThreeTenABP. См. Учебник.
На мгновение на временной шкале в UTC с разрешением наносекунды используйте Instant. Учитывая смещение от UTC, используйте OffsetDateTime. Для часового пояса (смещение + правила аномалий) используйте ZonedDateTime, но по своему характеру не имеет определенного минимума и не имеет ZoneId. Для значения даты только без времени и без часового пояса используйте LocalDate. Для значения времени суток без даты и без часового пояса используйте LocalTime. Для даты и времени без часового пояса используйте LocalDateTime.
-
Instant.MIN=Instant.MIN-1000000000-01-01T00:00Z -
OffsetDateTime.MIN=-999999999-01-01T00:00:00+18:00 -
LocalDate.MIN=-999999999-01-01 -
LocalTime.MIN=00:00 -
LocalDateTime.MIN=-999999999-01-01T00:00:00 -
Year.MIN_VALUE=-999,999,999 -
ZoneOffset.MIN=-18:00(но-12:00на практике)
Внимание: будьте осторожны при использовании этих значений в качестве своего рода флага или специального значения. Многие другие программные библиотеки и базы данных могут не поддерживать эти экстремальные значения.
Для флага или специального значения, такого как ненулевое "нет значения", я предлагаю выбрать произвольный момент, но избегаю перехода к таким крайним достижениям как назад, так и вперед во времени. Возможно, дата ссылки на эпоху Unix, первый момент 1970 года в UTC, 1970-01-01T00: 00: 00Z. Определяется как константа в Java: Instant.EPOCH
Ответ 4
То же, что и для классов Calendar.
Попробуйте следующее:
Date d = new Date( Long.MIN_VALUE );
System.out.println( d );
Вы увидите:
Sun Dec 02 16:47:04 GMT 292269055
Но формат даты по умолчанию не включает эру - BCE для этой даты.
Ответ 5
Так как Date отмечен как устаревший, я думал, что должен быть другой способ обойти это, поэтому я посмотрел на некоторые из методов, и я нашел этот способ
Вы также можете использовать Long.MIN_VALUE, в то время, когда я это написал, я не искал его и даже/так я его не помнил.
