java - 格式化时区指示符

标签 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));

最佳答案

您需要三个 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/

相关文章:

maven - 吊带模型 OSGI 配置

java - 如何使用java获取最后一个字符串 '22'

java - JAXB 删除不必要的嵌套 XML 标记

javascript - 如何在 12 小时内检索当前的 `DateTime`?

java ZonedDateTime 毫秒部分解析错误

java - 用户在 aem 中调用 API 时需要输入密码

spring - 集成 AEM/CQ5 和 Spring 框架?

java - 将鼠标悬停在 Java 中的多个按钮上?

java - 触发 spring-integration int-mail :inbound-channel-adapter? 的适当方法是什么

mysql - 在 laravel 5.0 中使用 FLUENT 的 datetime 列的日期值