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

Допустимый диапазон для java.util.Date?

Каков диапазон допустимых значений, которые я могу хранить в java.util.Date? API не говорит об этом.

Или он поддерживает даты, которые могут быть выражены как временные метки unix (это даты после 1.1.1970)? Если да, может ли быть класс (serializeable) в JDK, который также поддерживает даты до этого?

То, что я ищу, это класс/тип для поля дня рождения в db4o

4b9b3361

Ответ 1

Он поддерживает даты между Long.MIN_VALUE и Long.MAX_VALUE:

class DateTest {
    public static void main(String[] args) {
        DateFormat df = new SimpleDateFormat("d MMM yyyy G, HH:mm:ss.S Z");

        System.out.println(df.format(new Date(Long.MIN_VALUE)));
        System.out.println(df.format(new Date(0)));
        System.out.println(df.format(new Date(Long.MAX_VALUE)));
    }
}

Выходы

2 Dec 292269055 BC, 10:47:04.192 -0600
31 Dec 1969 AD, 18:00:00.0 -0600
17 Aug 292278994 AD, 01:12:55.807 -0600

(Примечание: время, указанное выше, является центральным временем)

Ответ 2

java.util.Date хранит даты в long как миллисекунды, используя в качестве ссылки ссылку с номером 1970-01-01. Поскольку long является подписанным 64-битным целым числом, вы можете ожидать, что java.util.Date будет охватывать около 290 миллионов лет до и после контрольной даты - то есть, если вам не нужны четкие представления и переключатели календаря.

Если вы не планируете день рождения динозавра, я бы сказал, что java.util.Date, вероятно, подходит для вашей цели...

Ответ 3

Даты могут содержать значения до 1.1.1970, просто используйте отрицательный длинный: -)