gpt4 book ai didi

java - 在 Joda Time 的帮助下使用夏令时的正确方法

转载 作者:行者123 更新时间:2023-11-29 21:28:58 26 4
gpt4 key购买 nike

由于那天的夏令时,我得到的结果不正确。

我用过,

Calendar todays = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"));
todays.set(Calendar.HOUR_OF_DAY, 24);
todays.set(Calendar.MINUTE, 0);
todays.set(Calendar.SECOND, 0);
todays.set(Calendar.MILLISECOND, 0);

Joda-Time doc 中所述,

Consider adding 1 day at the daylight savings boundary. If you use a period to do the addition then either 23 or 25 hours will be added as appropriate. If you had created a duration equal to 24 hours, then you would end up with the wrong result.

我没有找到任何关于如何使用 Joda-Time 实现这样一个周期的示例。

所以,我想动态获取每天包含的小时数,而不是像前面提到的那样用 24 小时硬编码。

最佳答案

最简单的方法可能是使用类似的东西:

public int getHoursInDay(LocalDate date, DateTimeZone zone) {
DateTime start = date.toDateTimeAtStartOfDay(zone);
DateTime end = date.plusDays(1).toDateTimeAtStartOfDay(zone);
return new Duration(start, end).getStandardHours();
}

编辑:如果您使用的是不支持 Duration.getStandardHours() 的 Joda Time 版本,您可以使用:

public int getHoursInDay(LocalDate date, DateTimeZone zone) {
DateTime start = date.toDateTimeAtStartOfDay(zone);
DateTime end = date.plusDays(1).toDateTimeAtStartOfDay(zone);
long millis = new Duration(start, end).getMillis();
return (int) (millis / DateTimeConstants.MILLIS_PER_HOUR);
}

关于java - 在 Joda Time 的帮助下使用夏令时的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19902301/

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