java - 将格式 "yyyy-mm-ddTHH:MM:SS+/-0000"的日期转换为 "yyyy-mm-ddTHH:MM:SSZ"

标签 java datetime java-8 java-time

我需要将日期字符串转换为另一种特定格式。

例如:我有一个日期,可以是 YYYY-MM-DDYYYY-MM-DDThh:mm:ss±0000我需要将其转换为 "yyyy-mm-ddTHH:MM:SSZ" .

我使用 Java 8 API 尝试了一些方法,但找不到出路。

最佳答案

试试这个(Java 8):

String input = "2016-10-14T14:19:40-04:00";
String output = ZonedDateTime.parse(input).toInstant().toString();
System.out.println(output); // prints 2016-10-14T18:19:40Z

这是有效的,因为 ZonedDateTime 的主要格式由 parse() 使用是 ISO_ZONED_DATE_TIME ,因此它将以您描述的格式解析输入。

您请求的输出格式恰好是默认格式Instant ,由其 toString() 返回方法,即 ISO_INSTANT格式。

在两者之间进行转换(使用 toInstant() 方法将 ZonedDateTime 转换为 Instant)将执行必要的时区调整。

关于java - 将格式 "yyyy-mm-ddTHH:MM:SS+/-0000"的日期转换为 "yyyy-mm-ddTHH:MM:SSZ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40049414/

相关文章:

java - 以 Java 8 方式检查对象中包含的空对象和空值

java - 我可以使用 OpenIMAJ 从 IP 摄像机捕获视频吗?

java - 56 位 DES 被填充为 64 位,导致一字节解密不足

java - 无法运行 "Hello World"Elastic-Search Java 客户端

java - Android 语言环境困惑?

perl - 如何在Perl中将日期四舍五入到最近的15分钟间隔?

java - DateTimeFormatter 月份模式字母 "L"失败

javascript - 在 Angular Controller 中将 Rails 日期时间更改为字符串

django - 如何在 django admin 中显示人工时间(x 天前或现在)?

java - 在 ConcurrentHashMap 上使用 forEach 时,是否会反射(reflect)更新,或者它的行为是否像故障安全迭代器?