将毫秒转换为 ZonedDateTime 不起作用
convert millis to ZonedDateTime not working
我有这个毫秒长:
1570046362841
使用 版本 1 转换时:
var myDate = ZonedDateTime.ofInstant(Instant.ofEpochSecond(1570046362841), ZoneId.of("America/New_York"));
我会得到这个结果(这是错误的!):
+51722-10-16T03:58:54-04:00[America/New_York]
但是,当使用 版本 2 转换时:
final String dateFormat = "yyyy-MM-dd HH:mm:ss SSS";
SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
formatter.setTimeZone(TimeZone.getTimeZone("America/New_York"));
var dateObj = new Date(1570046362841);
var myDate = formatter.format(dateObj);
我得到正确的结果:
2019-10-02 15:59:59 934
为什么版本 1 是错误的?版本 1 有什么问题?
而不是 Instant.ofEpochSecond()
你需要使用 Instant.ofEpochMilli()
因为你有毫秒。
我有这个毫秒长:
1570046362841
使用 版本 1 转换时:
var myDate = ZonedDateTime.ofInstant(Instant.ofEpochSecond(1570046362841), ZoneId.of("America/New_York"));
我会得到这个结果(这是错误的!):
+51722-10-16T03:58:54-04:00[America/New_York]
但是,当使用 版本 2 转换时:
final String dateFormat = "yyyy-MM-dd HH:mm:ss SSS";
SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
formatter.setTimeZone(TimeZone.getTimeZone("America/New_York"));
var dateObj = new Date(1570046362841);
var myDate = formatter.format(dateObj);
我得到正确的结果:
2019-10-02 15:59:59 934
为什么版本 1 是错误的?版本 1 有什么问题?
而不是 Instant.ofEpochSecond()
你需要使用 Instant.ofEpochMilli()
因为你有毫秒。