Подтвердить что ты не робот

Минимальная дата в Java

Какое минимальное значение даты в Java?

4b9b3361

Ответ 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.

Внимание: будьте осторожны при использовании этих значений в качестве своего рода флага или специального значения. Многие другие программные библиотеки и базы данных могут не поддерживать эти экстремальные значения.

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