2009-09-13 4 views
0

Ok, я хочу, чтобы моя программа распечатывает дату: 1/1/2009GregorianCalendar постоянная дата

Но это то, что он печатает:

чт 1 января 00:00:00 EST 2009

из этого кода

GregorianCalendar startDate = new GregorianCalendar(2009, Calendar.JANUARY, 1); 
public void setStart() 
{ 
    startDate.setLenient(false); 
    Date date = new Date(startDate.getTimeInMillis()); 
    System.out.println(date); 
} 

Как я могу изменить его так, чтобы он только печатает 1/1/2009?

ответ

2

Использование SimpleDateFormat:

GregorianCalendar startDate = new GregorianCalendar(2009, Calendar.JANUARY, 1); 
public void setStart() { 
    startDate.setLenient(false); 
    DateFormat df = new SimpleDateFormat("d/M/yyyy"); 
    df.format(startDate.getDate()); 
} 

Вы неявно вызывая toString() метод, который (правильно), распечатав полное содержание.

Между прочим, нет необходимости строить дату так, как вы делаете. Вызов getDate() на Calendar возвращает объект Date.

+0

удивительным спасибо! – Karen

2

В настоящее время вызывается метод Date.toString() для отображения представления String экземпляра GregorianCalendar.

Что нужно сделать, так это создать DateFormat, который будет производить представление String, которое желательно. Объект DateFormat может использоваться для форматирования экземпляра Date для желаемого форматирования с использованием метода format.

Самый простой способ добиться желаемого - использовать класс SimpleDateFormat, который имеет constructor which takes a format string для вывода Date в желаемой форме.

Calendar calendar = new GregorianCalendar(2009, Calendar.JANUARY, 1); 
DateFormat df = new SimpleDateFormat("M/d/yyyy"); 
System.out.println(df.format(calendar.getTime())); 

Выход

1/1/2009 
+0

по какой-то причине, независимо от того, какой месяц я поставил, выход месяца равен 0. Когда я это делаю, я получаю 1/0/2009 – Karen

Смежные вопросы