Форматирование даты Java - PullRequest
0 голосов
/ 13 сентября 2011

Строка ввода, как указано ниже

20110913T100702.631 GMT

Выходной файл необходим в таком формате

Вторник, 13 сентября 2011 г., 17: 52: PM

Не могли бы вы помочь мне в этом. (В этом примере входное значение и выходное значение не связаны, это два отдельных значения)

Ответы [ 3 ]

2 голосов
/ 13 сентября 2011

Попробуйте:

private String formatDate() throws Exception {
    DateFormat inputFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss.SSS Z");
    DateFormat outputFormat = new SimpleDateFormat("EEEEE', 'MMMMM' 'dd', 'yyyy' 'h:mm:a");
    Date date = inputFormat.parse("20110913T100702.631 GMT ");
    return outputFormat.format(date);
}
1 голос
/ 13 сентября 2011

Вам нужен класс SimpleDateFormat или DateFormat http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/

0 голосов
/ 11 мая 2017

ТЛ; др

ZonedDateTime.parse (
    "20110913T100702.631 GMT" , 
    DateTimeFormatter.ofPattern( "uuuuMMdd'T'HH:mm:ss.SSS z" )
).format( 
     DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL , FormatStyle.SHORT )
                      .withLocale( Locale.US )
 )

Вторник, 13 сентября 2011 г., 10:07

ISO 8601

Ваша строка ввода почти соответствует формату, определенному как «базовая» версия стандартного формата ISO 8601 . Слово basic означает минимизацию использования разделителей, в противном случае используется более распространенная «расширенная» версия формата ISO 8601.

String input = "20110913T100702.631 GMT" ;

Использование java.time

В других Ответах используются старые классные классы даты и времени, которые теперь заменяются классами java.time.

Классы java.time по умолчанию используют многие стандартные форматы ISO 8601 при разборе / генерации строк. Поэтому часто нет необходимости указывать шаблон форматирования. Но этот конкретный формат basic не поддерживается по умолчанию, поэтому мы должны указать шаблон форматирования.

DateTimeFormatter fInput = DateTimeFormatter.ofPattern ( "uuuuMMdd'T'HHmmss.SSS z" );

Разобрать как ZonedDateTime.

ZonedDateTime zdt = ZonedDateTime.parse ( input, fInput );

Чтобы сгенерировать строку, представляющую значение объекта ZonedDateTime в нужном формате, вы можете определить заданный шаблон форматирования. Но я предлагаю вам вместо этого позволить java.time автоматически локализоваться для вас.

Для локализации укажите:

  • FormatStyle для определения длины или сокращения строки.
  • Locale для определения (а) человеческого языка для перевода названия дня, названия месяца и т. Д., И (б) культурных норм, решающих вопросы сокращения, капитализации, пунктуации, разделители и тому подобное.

Итак ...

// Generate output string
Locale locale = Locale.US;  // Or Locale.CANADA_FRENCH, Locale.ITALY, etc.
DateTimeFormatter fOutput =
    DateTimeFormatter.ofLocalizedDateTime ( FormatStyle.FULL, FormatStyle.SHORT ) // Specify format style of date portion, then time-of-day portion.
                     .withLocale ( locale );
String output = zdt.format ( fOutput );

Дамп на консоль.

// Dump to console
System.out.println ( "input: " + input );
System.out.println ( "zdt.toString(): " + zdt );
System.out.println ( "output: " + output );

См. , этот код запускается на IdeOne.com .

ввод: 20110913T100702.631 GMT

zdt.toString (): 2011-09-13T10: 07: 02.631Z [GMT]

выходной: вторник, 13 сентября 2011 г., 10:07


О java.time

Инфраструктура java.time встроена в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar, & SimpleDateFormat.

Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на java.time классы.

Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Где взять классы java.time?

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval, YearWeek, YearQuarter и more .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...