Форматирование TimeZoneDesignator - PullRequest
0 голосов
/ 24 января 2019

Необходимо отформатировать эту строку 2017-08-01T15:43:45+0530 до 2017-08-01T15:43:45+05:30, используя определенный формат даты. Пробовал с yyyy-MM-dd'T'HH:mm:ssZZ. Не работал ..

Date modified = aemPage.getProperties().get(cq:lastModified, Date.class);
private DateFormat seoDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZ");

String formattedDate = seoDateFormat.format(modified));

1 Ответ

0 голосов
/ 24 января 2019

Вам нужно три X, чтобы выйти из набора, например

Sign TwoDigitHours : Minutes

. Я предлагаю использовать OffsetDateTime, если вы работаете с java8 или выше:

String input = "2017-08-01T15:43:45+0530";

DateTimeFormatter parser = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");

OffsetDateTime offsetDateTime = OffsetDateTime.parse(input, parser);

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX");

System.out.println(offsetDateTime.format(formatter)); // 2017-08-01T15:43:45+05:30

Поскольку 2017-08-01T15:43:45+05:30 равно ISO_OFFSET_DATE_TIME, вы также можете просто использовать:

String outPut = offsetDateTime.toString();

Обновление:

Если вы хотите использовать SimpleDateFormatпопробуйте:

String input = "2017-08-01T15:43:45+0530";

SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");

Date date = parser.parse(input);

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");

System.out.println(formatter.format(date)); 

Но это работает только тогда, когда смещение вашей системы равно 0530, поскольку Date не содержит информацию о часовом поясе.

...