格式化TimeZoneDesignator

时间:2019-01-24 12:13:05

标签: java datetime aem simpledateformat

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

您需要三个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不包含时区信息。