Как отформатировать строку с несколькими датами в Java

Я хотел бы отформатировать строку, содержащую шаблоны для более чем одной даты/времени. Например:

'Starting on' EEEE 'at' h:mm a 'and ending on' MMM d

Здесь я пытаюсь использовать две даты в одной строке формата, дату начала и дату окончания. Я не хочу разбивать его на две строки, потому что порядок и структура предложения могут отличаться в других языках, и я не хочу вводить какие-либо предположения в свой код. Насколько я могу судить, это невозможно сделать с помощью SimpleDateFormat, поскольку методы format() принимают только один объект даты.


person Mike Kucera    schedule 05.04.2013    source источник
comment
Может быть заинтересован в Joda-Time   -  person Caffeinated    schedule 05.04.2013


Ответы (2)


Вы можете использовать java.text.MessageFormat у которого есть способы предоставить формат данных, который вам нужен.

String result = MessageFormat.format(
     "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
     arguments);
person user1697575    schedule 05.04.2013

См. http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#dt, например:

    Date today = new Date();
    Date yesterday = new Date();
    yesterday.setTime(today.getTime() - (1000*60*60*24) );
    System.out.printf( "Yesterday was: %ta, today is: %ta%n ", yesterday, today );

Выход

    Yesterday was: Thu, today is: Fri
person Ray Stojonic    schedule 05.04.2013