Назначьте Дату в одной строке

Согласно Java API, конструктор Date(year, month, day) обесценивается. Я знаю, что могу заменить его следующим кодом:

Calendar myCal = Calendar.getInstance();
myCal.set(Calendar.YEAR, theYear);
myCal.set(Calendar.MONTH, theMonth);
myCal.set(Calendar.DAY_OF_MONTH, theDay);
Date theDate = myCal.getTime();

Однако я хотел бы, чтобы что-то короче заменило его (идеально одна - две строки).

46
задан abhi 3 July 2016 в 18:12
поделиться

5 ответов

Вы можете использовать новый GregorianCalendar (theYear, theMonth, theDay) .getTime () :

public GregorianCalendar (int year, int month, int dayOfMonth )

Создает GregorianCalendar с заданной датой, установленной в часовом поясе по умолчанию с локалью по умолчанию.

74
ответ дан 26 November 2019 в 20:08
поделиться

Вы можете использовать

new SimpleDateFormat( "yyyyMMdd" ).parse( "20100520" )
22
ответ дан 26 November 2019 в 20:08
поделиться

Почему бы вам просто не написать простой служебный метод:

public final class DateUtils {
    private DateUtils() {
    }

    public static Calendar calendarFor(int year, int month, int day) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month);
        cal.set(Calendar.DAY_OF_MONTH, day);
        return cal;
    }

    // ... maybe other utility methods
}

А затем вызвать его повсюду в остальной части кода:

Calendar cal = DateUtils.calendarFor(2010, Calendar.MAY, 21);
6
ответ дан 26 November 2019 в 20:08
поделиться

Это еще одна причина использовать Joda Time

new DateMidnight(2010, 3, 5)

DateMidnight теперь устарел, но того же эффекта можно добиться с помощью Joda Time DateTime

DateTime dt = new DateTime(2010, 3, 5, 0, 0);
14
ответ дан 26 November 2019 в 20:08
поделиться

Календарь имеет метод set(), который может устанавливать год, месяц и день месяца в одном вызове:

myCal.set( theYear, theMonth, theDay );
10
ответ дан 26 November 2019 в 20:08
поделиться
Другие вопросы по тегам:

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