java计算特定时区中两个ZoneDateTime对象之间的天数?
我有下面的代码片段,其中有两个日期对象dates[0]
和dates[1]
。两者都转换为GMT+10时区。我试图在GMT+10时区,而不是UTC,找到这两个日期之间的天数(逻辑日历天数)
我试过ChronoUnit.DAYS.between()
,比如下面,但我相信它会先将日期转换为UTC(我希望下面打印1和0,但它打印0和0)
Date[] dates = new Date[2];
SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
dates[1] = formatter.parse("2018-12-04T12:00:00");
dates[2] = formatter.parse("2018-12-04T16:00:00");
long toDate = 1543942800000L; \\2018-12-04T17:00:00
String timeZone = "GMT+10";
ZonedDateTime toDateZoned = ZonedDateTime.ofInstant(
Instant.ofEpochMilli(toDate),
ZoneId.of(timeZone)
);
for (Date ele: dates) {
ZonedDateTime eleZoned = ZonedDateTime.ofInstant(
ele.toInstant(),
ZoneId.of(timeZone)
);
System.out.println(ChronoUnit.DAYS.between(eleZoned,toDateZoned));
}
如果我用
System.out.println(eleZoned);
System.out.println(toDateZoned);
System.out.println(ChronoUnit.DAYS.between(eleZoned, toDateZoned));
我得到以下输出
2018-12-04T22:00+10:00[GMT+10:00]
2018-12-05T03:00+10:00[GMT+10:00]
0
2018-12-05T02:00+10:00[GMT+10:00]
2018-12-05T03:00+10:00[GMT+10:00]
0
# 1 楼答案
如果需要日期之间的日历日,可以在调用
between()
之前将其转换为LocalDate