需要使用特定的格式将此字符串 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
我建议使用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
不包含时区信息。
关于java - 格式化时区指示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54346432/