最近工作上遇到需要固定在整10分钟一个周期调度某个任务,所以需要这样一个功能,记录下
package org.example;
import com.google.gson.Gson;
import org.apache.commons.lang3.time.DateUtils;
import java.io.InputStream;
import java.util.Calendar;
import java.util.Date;
public class Main {
/**
* 计算当前时间最近的下一个整10分钟时间点
* @param baseTime
* @return
*/
public static long getNextMillisEndWithMinute0(Date baseTime) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(baseTime);
int minute = calendar.get(Calendar.MINUTE);
if (minute < 50) {
int add = 10 - minute%10;
calendar.add(Calendar.MINUTE,add);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime().getTime();
}
// 当前时间+1小时
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date endTime = DateUtils.addHours(calendar.getTime(), 1);
return endTime.getTime();
}
public static void main(String[] args) throws Exception {
System.out.println(new Date(getNextMillisEndWithMinute0(new Date())));
}
}
运行结果
参考链接:java计算下一个整5分钟时间点 - 极客子羽 - 博客园 (cnblogs.com)