Лучший способ получить максимальное значение Даты в Java?

класс javafx.scene.Node имеет пару методов setUserData (Object) и Object getUserData ()

, которые вы могли бы использовать для добавления вашей информации в узел.

So , вы можете вызвать page.setUserData (info);

И контроллер может проверить, задана ли информация. Кроме того, вы можете использовать ObjectProperty для пересылки данных назад, если это необходимо.

Соблюдайте документацию здесь: http://docs.oracle.com/javafx/2/api/javafx/fxml /doc-files/introduction_to_fxml.html Перед фразой «В первой версии handleButtonAction () помечен с помощью @FXML, чтобы разрешить разметку, определенную в документе контроллера, вызвать ее. Во втором примере поле кнопки аннотируется, чтобы позволить загрузчику устанавливать его значение. Метод initialize () аналогично аннотируется. "

Итак, вам нужно связать контроллер с узлом и установить пользовательские данные для узла.

56
задан jthg 16 November 2009 в 18:31
поделиться

6 ответов

Попробуйте

new Date(Long.MAX_VALUE)

, который даст вам максимально возможное значение даты в Java.

106
ответ дан 26 November 2019 в 17:10
поделиться

От Java SE 8 Вы могли использовать:

LocalDate.MAX
1
ответ дан tmucha 7 November 2019 в 16:29
поделиться

Инкапсулируйте желаемую функциональность в своем собственном классе, использование Long.MAX_VALUE, скорее всего, вызовет у вас проблемы.

class ExpirationDate {
    Date expires;

    boolean hasExpiration() {
        return expires == null;
    }

    Date getExpirationDate() {
        return expires;
    } 

    boolean hasExpired(Date date) {
        if (expires == null) {
            return true;
        } else {
            return date.before(expires);
        }
    }

    ...
}
21
ответ дан 26 November 2019 в 17:10
поделиться

+1 к предложениям Long.MAX_VALUE. Похоже, это поможет вам, если вы отсортируете данные по полю даты.

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

class DateUtil
{
  public static final Date NO_EXPIRE = new Date( Long.MAX_VALUE );
}

Затем вы можете использовать простое сравнение идентичности (mydate == DateUtils.NO_EXPIRE), чтобы проверить, относится ли конкретная дата к вашему особому случаю вместо obj.equals (); (например, mydate.equals (DateUtils.NO_EXPIRE);)

6
ответ дан 26 November 2019 в 17:10
поделиться

Вот что я делаю:

public static final TimeZone UTC;

// 0001.01.01 12:00:00 AM +0000
public static final Date BEGINNING_OF_TIME;

// new Date(Long.MAX_VALUE) in UTC time zone
public static final Date END_OF_TIME;

static
{
    UTC = TimeZone.getTimeZone("UTC");
    final Calendar c = new GregorianCalendar(UTC);
    c.set(1, 0, 1, 0, 0, 0);
    c.set(Calendar.MILLISECOND, 0);
    BEGINNING_OF_TIME = c.getTime();
    c.setTime(new Date(Long.MAX_VALUE));
    END_OF_TIME = c.getTime();
}

Обратите внимание, что если часовой пояс НЕ является UTC, вы получите смещения от "конца времени", которые не будут максимальными значениями. Они особенно полезны для вставки в поля базы данных, когда даты не должны быть NULL.

4
ответ дан 26 November 2019 в 17:10
поделиться

рассматривали ли вы возможность использования Joda Time ?

Планируется, что он будет включен в java 7 в качестве основы для JSR-310

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

2
ответ дан 26 November 2019 в 17:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: