Вопрос

Хорошо, я хочу, чтобы моя программа распечатывала дату:01.01.2009

Но вот что он выводит:

Четверг, 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);
}

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

Это было полезно?

Решение

Используйте 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 () в Календаре возвращает объект Date .

Другие советы

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

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

Самый простой способ добиться желаемого — использовать SimpleDateFormat класс, который имеет конструктор, который принимает строку формата для вывода 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top