Лучший способ определить постоянные даты Java - PullRequest
5 голосов
/ 01 ноября 2011

Я хочу определить некоторые константы, в частности, дату и календарь, которые существуют до того, как мой домен может существовать.У меня есть код, который работает, но он уродлив.Я ищу предложения по улучшению. static Calendar working; static { working = GregorianCalendar.getInstance(); working.set(1776, 6, 4, 0, 0, 1); } public static final Calendar beforeFirstCalendar = working; public static final Date beforeFirstDate = working.getTime();

Я устанавливаю их на 4 июля 1776 года. Я бы предпочел вообще не иметь «рабочей» переменной.

Спасибо

Ответы [ 3 ]

5 голосов
/ 01 ноября 2011

Я бы извлек его в метод (в классе утилит, предполагая, что другие классы тоже захотят этого):

class DateUtils {
  public static Date date(int year, int month, int date) {
    Calendar working = GregorianCalendar.getInstance();
    working.set(year, month, date, 0, 0, 1);
    return working.getTime();
  }
}

Тогда просто,

public static final Date beforeFirstDate = DateUtils.date(1776, 6, 4);
4 голосов
/ 01 ноября 2011

Я не уверен, что понимаю .... но разве это не работает?

public static final Calendar beforeFirstCalendar;
static {
    beforeFirstCalendar = GregorianCalendar.getInstance();
    beforeFirstCalendar.set(1776, 6, 4, 0, 0, 1);
}
public static final Date beforeFirstDate = beforeFirstCalendar.getTime();
2 голосов
/ 06 октября 2015

Возможно, будет понятнее использовать строковую нотацию XML. Это удобочитаемо для человека и позволяет избежать локальной переменной, которую вы хотели исключить:

import javax.xml.bind.DatatypeConverter;

Date theDate = DatatypeConverter.parseDateTime("1776-06-04T00:00:00-05:00").getTime()
...