我有一个使用 Java 7 的系统,我需要生成一个等效于 Instant.now
(Java 8) 的日期。
例如,Instant.now().toString()
生成这样的日期:
“2018-12-19T12:32:46.816Z”
使用 java.util.Date
我有这个日期:"2018-12-19T10:38:13.892"
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat sdf;
sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
String text = sdf.format(date);
System.out.println(text);
我不知道是否可以在此日期结束时简单地连接一个“Z”。
如果没有 "Z",另一个使用 Instant.parse
解析此日期的系统会抛出错误:
java.time.format.DateTimeParseException: Text '2018-12-19T10:38:13.892' could not be parsed at index 23 at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1988) at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1890) at java.base/java.time.Instant.parse(Instant.java:395)
最佳答案
Z
表示 UTC time zone ,您可以将时区设置为 UTC
并手动附加 Z
:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
关于java - Instant.now 相当于 java.util.Date 或 Java 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53851881/