ISO 8601 和 java.time
ISO 8601 是日期和时间的国际标准,包括日期和时间格式。几乎任何编程语言都支持它,包括 JavaScript 和 Java。
在 JavaScript 中,使用 . 生成 ISO 8601 格式的字符串Date.toISOString()
。我们不需要任何格式化程序。
var d = new Date();
var n = d.toISOString();
console.log(n);
只要您记得它是 UTC 格式,结果在某种程度上是人类可读的,由结尾的Z
.
在 Java 中使用Instant.parse()
. 我们也不需要在这里指定任何格式化程序。
String stringFromJavaScript = "2021-07-12T05:54:03.365Z";
Instant inst = Instant.parse(stringFromJavaScript);
System.out.println(inst);
输出:
2021-07-12T05:54:03.365Z
该问题要求java.util.Date
日期选择器的结果。我们应该避免使用java.util.Date
它,因为尽管名称 aDate
不代表日期,并且因为Date
该类设计不良且早已过时。对于没有时间的日期 aLocalDate
是合适的:
LocalDate date = inst.atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println(date);
在我的时区,输出是:
2021-07-12
atZone()
转换取决于时区,并且仅当 JVM 的默认时区(或您传递到的时区)与日期选择器使用的相同时才会正确。
如果您确实需要Date
尚未升级到 java.time 的旧版 API:
Date oldfashionedDate = Date.from(inst);
System.out.println(oldfashionedDate);
2021 年 7 月 12 日星期一 07:54:03 CEST
链接