java - 解析 ISO-8601 日期时间
问题描述
似乎在 Java 中解析 ISO-8601 的正确时间戳形式如下:
“2020-02-03T23:40:17+00:00”;
但是我的看起来像:
“2020-02-03T23:40:17+0000”;
我怎样才能正确解析这个?
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class TestTime {
public static void main(String[] args) {
String ts = "2020-02-03T23:40:17+0000";
DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_DATE_TIME;
OffsetDateTime offsetDateTime = OffsetDateTime.parse(ts, timeFormatter);
long timestamp = offsetDateTime.toEpochSecond() * 1000;
}
}
解决方案
您可以将模式传递给DateTimeFormatter
:
String ts = "2020-02-03T23:40:17+0000";
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssZZZ");
OffsetDateTime offsetDateTime = OffsetDateTime.parse(ts, timeFormatter);
请注意,偏移量的正确模式是ZZZ
代替X
or XXXX
,例如,当将解析的日期时间格式化回字符串时,这一点变得很明显:
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssX");
OffsetDateTime offsetDateTime = OffsetDateTime.parse(ts, timeFormatter);
System.out.println(offsetDateTime.format(timeFormatter));
2020-02-03T23:40:17Z
而在使用时ZZZ
,它会像2020-02-03T23:40:17+0000
. 请参阅. _DateTimeFormatter
推荐阅读
- python - Python:更改源自 seaborn 和 matplotlib 的 ptitprince 存储库的视觉参数
- javascript - 单击按钮时选择框出现/消失
- excel - 如何提取日期并从今天的日期中减去它?
- java - 无法从 Maven 项目中的 Kotlin 文件中引用 Java 类
- javascript - 通过 $ref / 自引用获取值
- javascript - 如何访问对象中的值?
- python - 在元素中找不到标签值
- excel - 擦除存储在内存中的数据还是进一步简化这个子?
- sql - oracle替换中间的一个单词
- c# - ASP.net 核心,什么更好更快,jquery 或 razor