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

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

46 голосов
/ 01 октября 2010

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

Ответы [ 5 ]

66 голосов
/ 01 октября 2010

Не забывайте, что конструктор Date с радостью принимает отрицательные значения.

Date date = new Date(Long.MIN_VALUE);

возвращает

Вс. 02 дек. 22:47:04 БДТ 292269055

Полагаю, это время Большого взрыва динозавров:)

EDIT

Как ответил Мартин Клейтон , вы можете использовать класс Calendar, чтобы проверить эпоху. Это выведет 0, что означает BCE:

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date(Long.MIN_VALUE));
System.out.println(calendar.get(Calendar.ERA));
42 голосов
/ 01 октября 2010

Если вы говорите о java.util.Date как о метке времени, вы можете сделать это

Date d = new Date(0L), и вы увидите, что это означает, что Чт 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

14 голосов
/ 08 апреля 2016

Другие ответы могут быть правильными, но использовать устаревшие классы.

java.time

Старые классы даты и времени (java.util.Date/.Calendar и т. Д.) Были вытеснены фреймворком java.time , встроенным вЯва 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

5 голосов
/ 01 октября 2010

То же, что и для классов Календаря.

Попробуйте это:

Date d = new Date( Long.MIN_VALUE );
System.out.println( d );

Вы увидите:

Sun Dec 02 16:47:04 GMT 292269055

Но формат даты по умолчанию не включает эру - BCE для этой даты.

0 голосов
/ 23 ноября 2016

Поскольку Date помечен как устаревший , я подумал, что должен быть другой способ обойти это, поэтому я посмотрел на некоторые из методов, и я нашел этот путь

Вы также можете использовать Long.MIN_VALUE, в то время, когда я писал это, я не искал его, и даже / так, я не запомнил это. enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...