Java: Что / где являются максимальными и минимальными значениями григорианкалендара?

StackOverflow https://stackoverflow.com/questions/2393016

Вопрос

Каковы максимальные и минимальные значения Gregoriancalendar?

Они в постоянной как integer.max_value, или, может быть, Gregoriancalendar.get (BLAH)?

В двух словах, как я могу создать экземпляр Gregoriancalendar с Min / Max Value?

Это было полезно?

Решение

Это должно работать:

GregorianCalendar maxgc = new GregorianCalendar();
maxgc.setTime(new Date(Long.MAX_VALUE));

GregorianCalendar mingc = new GregorianCalendar();
mingc.setTime(new Date(Long.MIN_VALUE));

Другие советы

Я взял предложение Джокутнера и провел его с:

GregorianCalendar gCal = new GregorianCalendar( );

gCal.setTime(new Date(Long.MIN_VALUE));
System.out.println( "Min Date is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));

gCal.set( Calendar.SECOND, 3 );
System.out.println( "Min Date less 1 second is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));

gCal.setTime(new Date(Long.MAX_VALUE));
System.out.println( "Max Date is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));


Min Date is Sun Dec 02 16:47:04 GMT 292269055 0
Min Date less 1 second is Sun Aug 17 07:12:54 GMT 292278994 1
Max Date is Sun Aug 17 07:12:55 GMT 292278994 1

Что показывает минимальный и максимальный, и между ними индикация того, что произойдет, если вы пытаетесь перейти к второму до минимума - вы охватываете.

Это была версия 1.6.0_17.


Вы можете попробовать позвонить Календарь .getminimum () Для каждого типа поля (т. Е. Год, месяц и т. Д.) А затем установите эти минимальные значения на соответствующих типах поля. Это даст вам минимальный календарь. Я не знаю, есть ли более быстрый способ сделать это.

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

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. проект. Видеть Руководство.

На мгновение на временной шкале в универсальное глобальное время с разрешением наносекунды, использовать Instant. Отказ Данный АН Offset-from-UTC, использовать OffsetDateTime. Отказ Для часовой пояс (Смещение + правила для аномалий), используйте ZonedDateTime, но по своей природе не определена мин / макс, ни делает ZoneId. Отказ Для значения только даты без времени и без часового пояса, используйте LocalDate. Отказ На протяжении времени только ценность времени без даты и без часового пояса используйте LocalTime. Отказ На дату время без часового пояса, используйте LocalDateTime.

Ниже приведены все заранее определенные константы.

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

Для флага или особого значения, такого как ненулью «Нет доступных доступных», я предлагаю выбирать произвольный момент, но избегайте перехода на такие экстремальные достижения либо назад, либо вперед во времени. Возможно Ссылка на эпоху Unix, Первый момент 1970 года в UTC, 1970-01-01T00: 00: 00z. Определяется как константу в Java: Instant.epoch


О Java.Time.

То Java.Time. Рамки встроены в Java 8, а затем. Эти классы вытесняют проблему старого наследие Классы даты времени, такие как java.util.Date, Calendar, & SimpleDateFormat.

То Joda-Time Проект, сейчас в Режим технического обслуживания, советует миграцию к Java.Time. классы.

Чтобы узнать больше, см. Учебник Oracle. Отказ И поиск стека переполнения для многих примеров и пояснений. Спецификация JSR 310..

Вы можете обменять Java.Time. Объекты напрямую с вашей базой данных. Использовать JDBC драйвер совместимый с JDBC 4.2 или позже. Нет необходимости в струнах, нет необходимости в java.sql.* классы.

Где получить классы Java.Time?

То Threeten-Extra Проект расширяет Java.Time с дополнительными классами. Этот проект является доказательством для возможных будущих дополнений в Java.Time. Вы можете найти несколько полезных классов, таких как Interval, YearWeek, YearQuarter, а также более.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top