Java 如何在循环中为日期添加分钟数
我有一个日期,我想增加15分钟,同时满足一定的条件。我的问题是,一次加起来15分钟。 每个屏幕的输出类似于此操作,但带有日期Java 如何在循环中为日期添加分钟数,java,loops,date,calendar,Java,Loops,Date,Calendar,我有一个日期,我想增加15分钟,同时满足一定的条件。我的问题是,一次加起来15分钟。 每个屏幕的输出类似于此操作,但带有日期 int i = 10; while (i <= 100){ i = i + 15; System.out.println(i); } Screen output 10 25 40 55 70 85 100 My code for the dates is the following while(hour < hourEnd){ hour =
int i = 10;
while (i <= 100){
i = i + 15;
System.out.println(i);
}
Screen output
10
25
40
55
70
85
100
My code for the dates is the following
while(hour < hourEnd){
hour = new Date();
hour = date.getDate();
Calendar cal = Calendar.getInstance();
cal.setTime(hour);
cal.add(Calendar.MINUTE, 15);
hour = cal.getTime();
}
inti=10;
而
我的问题是,一次加起来15分钟
您需要在循环开始之前创建日期
。否则,它将在每次迭代时创建一个新的日期
hour = new Date();
Calendar cal = Calendar.getInstance();
while(hour < hourEnd){
cal.setTime(hour);
cal.add(Calendar.MINUTE, 15);
hour = cal.getTime();
}
hour=新日期();
Calendar cal=Calendar.getInstance();
时(小时<小时){
校准设定时间(小时);
计算添加(日历分钟,15);
小时=cal.getTime();
}
避免遗留类
避免使用旧的遗留日期时间类,如date
和Calendar
。它们设计糟糕、容易混淆且存在缺陷。java中添加了java.time框架以替换这些旧类
使用java.time
获取所需时区的当前时刻
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdtNow = ZonedDateTime.now( z );
显然,您希望增加15分钟的增量,直到到达时钟小时的末尾。最好在半开放式方法中考虑这种时间跨度,其中开始是包含的,但结束是独占的。这意味着我们希望运行到下一个小时的第一个时刻,但不包括下一个小时的第一个时刻
现在循环到增量
ZonedDateTime zdt = zdtNow ;
List<ZonedDateTime> zdts = new ArrayList<>( 4 );
while( zdt.isBefore( zdtNextHourStart ) ) {
zdts.add( zdt );
System.out.println( zdt );
// Prepare for next loop.
zdt = zdt.plusMinutes( 15 );
}
zoneDateTime zdt=zdtNow;
列表zdts=新阵列列表(4);
while(zdt.isBefore(zdtNextHourStart)){
添加(zdt);
系统输出打印LN(zdt);
//准备下一个循环。
zdt=zdt.复数(15);
}
在循环之前创建日期。目前,您在每个循环中创建一个新日期,并使用当前时间,然后在其中添加15分钟,但据我所知,只有“添加15分钟”部分实际上应该在循环中。您使用的是麻烦的旧日期时间类,现在是遗留的,被java.time类取代。
ZonedDateTime zdt = zdtNow ;
List<ZonedDateTime> zdts = new ArrayList<>( 4 );
while( zdt.isBefore( zdtNextHourStart ) ) {
zdts.add( zdt );
System.out.println( zdt );
// Prepare for next loop.
zdt = zdt.plusMinutes( 15 );
}