gpt4 book ai didi

java - 我怎样才能跳过在 java 中使用日历更改时区?

转载 作者:行者123 更新时间:2023-12-04 14:05:36 25 4
gpt4 key购买 nike

我在使用日历跳过时区时遇到问题。我的问题听起来像这样:我有一个从“x”日期开始的 Activity ,我必须增加时间但不能更改时钟时间。例如,如果我的 Activity 是 2019-03-09 22:46:00 并且我添加了 2400 小时(100 天),由于时区变化,我的输出将是“2019-06-17 23:46:00”。我需要输出为 2019-06-17 22:46:00。我怎样才能使用日历来制作它?日历 = 我的第一个 Activity 日期calendar2 = 我需要通过向第一个日历添加小时数来返回我的下一个事件之后的日期。

while (calendar.compareTo(calendar2) < 0) {
calendar.add(Calendar.HOUR_OF_DAY, nr_hours);
}
nextEvent =sdf.format(calendar.getTime());
return nextEvent;

最佳答案

tl;dr

LocalDateTime
.parse( "2019-03-09T22:46:00" )
.plus(
Duration.ofDays( 100 )
)

查看此代码 run live at IdeOne.com .

2019-06-17T22:46

详情

or example if my event its 2019-03-09 22:46:00 and i add 2400 hours (100 days) , my output will be "2019-06-17 23:46:00" because of time-zone changing.

您是否了解 17 日晚上 11 点确实比您所在时区的 9 日晚上 10 点晚 2400 小时?如果您在该时区的上下文中报告结束时间为晚上 10 点,那么您的结果将被读者解释为开始后 2399 小时的时刻。


永远不要使用可怕的类 CalendarDate。这些遗留类在多年前被 JSR 310 中定义的现代 java.time 类所取代。


如果您确定要忽略时区变化的现实,请使用 LocalDateTime .

LocalDateTime start = LocalDateTime.parse( "2019-03-09T22:46:00" ) ;
Duration d = Duration.ofDays( 100 ) ; // Days in `Duration` are generic 24 hours chunk of time without regard for dates and calendar. Same effect as `Duration.ofHours( 2_400 )`.
LocalDateTime end = start.plus( d ) ;

关于java - 我怎样才能跳过在 java 中使用日历更改时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68620832/

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