Форматирование в строке вывода времени

Рейтинг: 1Ответов: 2Опубликовано: 03.04.2015

Почему-то не получается вывести дату в строке c форматирующим символом %t.

Пытаюсь вот так:

Date current1 = calGrig.getTime(); // получаем текущую дату
System.out.printf ("текущая дата format 1: %t",  format1.format(current1));

А получается только так:

System.out.println("текущая дата format 1: " + format1.format(current1));

Ответы

▲ 2

Если внимательно почитать документацию по форматированному выводу в Java, то можно найти следующие строки:

The format specifiers for types which are used to represents dates and times have the following syntax:

   %[argument_index$][flags][width]conversion

The optional argument_index, flags and width are defined as above.

The required conversion is a two character sequence. The first character is 't' or 'T'. The second character indicates the format to be used. These characters are similar to but not completely identical to those defined by GNU date and POSIX strftime(3c).

Формат даты указывается двумя символами: собственно %t, указывающий, что параметр нужно интерпретировать как дату, и флаги, указывающие в каком формате дату следует отображать. Например, следующий код выведет дату в соответствии с текущей локалью:

System.out.printf("%tD", new Date());

В документации приведён полный список флагов форматирования дат.

Если перед вами не стоит жёсткое условие использовать в коде System.out.printf, то стоит обратить внимание на класс SimpleDateFormat, позволяющий более гибко и читаемо настраивать отображение дат.

▲ 1

Простите, за нескромный вопрос, но почему вы не хотите воспользоваться стандартным форматированием класса String?

System.out.println(String.format("текущая дата format 1: %t",format1.format(current1));