格式化 TimeZoneDesignator

Formatting TimeZoneDesignator

需要使用特定的日期格式将此字符串 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));

你需要三个X才能像

一样下车
Sign TwoDigitHours : Minutes

如果您使用 java8 或更高版本,我建议使用 OffsetDateTime

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:30ISO_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 不包含时区信息。