gpt4 book ai didi

java - 计算特定时区中两个 ZonedDateTime 对象之间的天数?

转载 作者:行者123 更新时间:2023-12-01 19:02:03 25 4
gpt4 key购买 nike

我有以下代码片段,其中有两个日期对象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

最佳答案

如果您想要日期之间的日历天数,可以在调用 Between() 之前将它们转换为 LocalDate。

Date[] dates = new Date[2];
TimeZone tz = TimeZone.getTimeZone("GMT+10");
SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
formatter.setTimeZone(tz);
dates[0] = formatter.parse("2018-12-05T12:00:00");
dates[1] = 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("Dates " + eleZoned + " " + toDateZoned);
System.out.println(ChronoUnit.DAYS.between(eleZoned,toDateZoned));
System.out.println(ChronoUnit.DAYS.between(eleZoned.toLocalDate(),toDateZoned.toLocalDate()));

关于java - 计算特定时区中两个 ZonedDateTime 对象之间的天数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59621246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com