Java 将时间设置为Gregorianalendar
我有一个使用Gregorianalendar的任务调度程序, 我想把时间定在09:30:00 代码: 但当我从nextExecutionTime获得时间时,它返回了奇怪的值:Java 将时间设置为Gregorianalendar,java,gregorian-calendar,Java,Gregorian Calendar,我有一个使用Gregorianalendar的任务调度程序, 我想把时间定在09:30:00 代码: 但当我从nextExecutionTime获得时间时,它返回了奇怪的值: Calendar.HOUR_OF_DAY 19 Calendar.MINUTE 44 Calendar.SECOND 27 避免遗留日期时间类 您正在使用可怕的日期时间类,这些类在几年前被java.time类取代 瞬间 将您的最后一次跑步记录为UTC中的瞬间 当地时间 指定一天中所需的时间 LocalTime lt =
Calendar.HOUR_OF_DAY 19
Calendar.MINUTE 44
Calendar.SECOND 27
避免遗留日期时间类
您正在使用可怕的日期时间类,这些类在几年前被java.time类取代
瞬间
将您的最后一次跑步记录为UTC中的瞬间
当地时间
指定一天中所需的时间
LocalTime lt = LocalTime.of( 9 , 30 ) ;
本地日期
获取今天的日期。这需要一个时区,因为在任何给定时刻,全球各地的日期都会因区域而异
ZoneId z = ZoneId.of( "America/Chicago" ) ;
LocalDate ld = LocalDate.now( z ) ;
分区截止时间
将这些部分组合成一个ZoneDateTime对象,确定时间轴上的一个特定时刻
ZonedDateTime zdt = ZonedDateTime.of( ld , lt , z ) ;
调整到UTC
提取一个瞬间,以调整到UTC
Instant instant = zdt.toInstant() ;
转换
如果需要使用遗留类与尚未更新为java.time的旧代码进行互操作,请转换。调用添加到旧类中的新转换方法。寻找到…和从…方法
您可以在和之间转换
nextExecutionTime.addCalendar.HOUR\u OF_DAY,9;-那么现在大约10点了吗?@ScaryWombat我不明白你加了9个小时,结果加了19个小时。。。与set非常不同…同意,但OP显然需要一个基于问题第一句的GregoriaCalendar。。。。也许任务调度器也非常有用old@CarlosHeuberger谢谢,修好了。我在底部添加了一个关于转换的部分。
Instant instant = zdt.toInstant() ;
GregorianCalendar gc = GregorianCalendar.from( zdt ) ;