最近工作上遇到需要固定在整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)



















