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
链接