我有 UTC 日期,我需要创建与 UTC 具有完全相同值的 Date 对象(遗留原因)。
我设法做到了:
String date = "2012-05-05 12:13:14";
TemporalAccessor formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
.withZone(ZoneId.of("UTC"))
.parse(date);
Instant instant = Instant.from(
formatter
); //
ZonedDateTime zdf = ZonedDateTime.ofInstant(instant,ZoneId.of("UTC"));
Calendar calendar = Calendar.getInstance();
calendar.set(zdf.getYear(),zdf.getMonthValue(),zdf.getDayOfMonth(),zdf.getHour(),zdf.getMinute(),zdf.getSecond());
Date dt = calendar.getTime();
Date d2 = Date.from(instant);
然而,困扰我的是——
当我创建日期对象时,它应该以我的 JVM 默认时区显示日期。但是这里的dt值与我输入的 UTC 日期完全相同,但dt2在我的默认时区中表示的日期相同,为什么会这样?为什么一个没有皈依而另一个被皈依了?
感谢您的解释!
慕标琳琳
繁花不似锦
相关分类