格式化时区指示符



需要将此字符串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不保存时区信息。

最新更新