Согласно 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();
Однако я хотел бы, чтобы что-то короче заменило его (идеально одна - две строки).
Вы можете использовать новый GregorianCalendar (theYear, theMonth, theDay)
.getTime ()
:
public GregorianCalendar (int year, int month, int dayOfMonth )
Создает GregorianCalendar с заданной датой, установленной в часовом поясе по умолчанию с локалью по умолчанию.
Вы можете использовать
new SimpleDateFormat( "yyyyMMdd" ).parse( "20100520" )
Почему бы вам просто не написать простой служебный метод:
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);
Это еще одна причина использовать Joda Time
new DateMidnight(2010, 3, 5)
DateMidnight теперь устарел, но того же эффекта можно добиться с помощью Joda Time DateTime
DateTime dt = new DateTime(2010, 3, 5, 0, 0);
Календарь имеет метод set(), который может устанавливать год, месяц и день месяца в одном вызове:
myCal.set( theYear, theMonth, theDay );