java获取时间间隔,获取当天每隔15分钟的时间

简介: Java开发中日常遇到的关于时间的问题

导入hutool依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>4.1.2</version>
</dependency>
    /**
     * 获取时间间隔(分钟)hutool的DateUtil
     * @return
     */
    public static int getBetweenMinute(Date date){
//        DateUtil.beginOfDay(new Date())当天时间凌晨
        //当前时间     目标时间        时间间隔类型(时、分、秒。。。)
        long between = DateUtil.between(DateUtil.date(), date, DateUnit.MINUTE);
        return Math.toIntExact(between);
    }
    /**
    * 生成相隔时间的数组
    */
    public static List<String> minuteList(){
        Date date = new Date();
        List<Date> ds = test(date);
        List<String> list = new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        for (Date d : ds) {
            list.add(sdf.format(d));
        }
        return list;
    }
    public static void main(String[] args) {
//        Date date = new Date();
//        List<Date> ds = test(date);
//
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        for (Date d : ds) {
//            System.out.println(sdf.format(d));
//        }
        System.out.println(minuteList());
    }

    public static List<String> findDates(String stime, String etime)
            throws ParseException {
        List<String> allDate = new ArrayList();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        Date dBegin = sdf.parse(stime);
        Date dEnd = sdf.parse(etime);
        allDate.add(sdf.format(dBegin));
        Calendar calBegin = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calBegin.setTime(dBegin);
        Calendar calEnd = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calEnd.setTime(dEnd);
        // 测试此日期是否在指定日期之后
        while (dEnd.after(calBegin.getTime())) {
            // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
            calBegin.add(Calendar.DAY_OF_MONTH, 1);
            allDate.add(sdf.format(calBegin.getTime()));
        }
        return allDate;
    }

    static List<Date> test(Date date) {
        Date start = dayStartDate(date);//转换为天的起始date
        Date nextDayDate = nextDay(start);//下一天的date

        List<Date> result = new ArrayList<Date>();
        while (start.compareTo(nextDayDate) < 0) {
            result.add(start);
            //日期加5分钟
            start = addFiveMin(start, 15);
        }
        return result;
    }

    private static Date addFiveMin(Date start, int offset) {
        Calendar c = Calendar.getInstance();
        c.setTime(start);
        c.add(Calendar.MINUTE, offset);
        return c.getTime();
    }

    private static Date nextDay(Date start) {
        Calendar c = Calendar.getInstance();
        c.setTime(start);
        c.add(Calendar.DATE, 1);
        return c.getTime();
    }

    private static Date dayStartDate(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);
        c.set(Calendar.MILLISECOND, 0);
        return c.getTime();
    }
    /**
     * @author wuqs
     * @version 1.0.0
     * @Description 获取i分钟后的时间
     * @createTime 2021年11月29日 15:58:00
     */
    public static String getMinute(int i) {
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        Calendar nowTime2 = Calendar.getInstance();
        nowTime2.add(Calendar.MINUTE, i * 15);
        return sdf.format(nowTime2.getTime());
    }
相关文章
java 计算两个时间间隔几天几小时几分钟几秒
计算两个时间间隔几年几月几天几小时几分钟几秒
java 计算两个时间间隔几天几小时几分钟几秒
|
Java
java时间换算(BJU转UTC)
UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。
302 0
java时间换算(BJU转UTC)
|
Java
Java获取当天、当前月、当前年(今年)的开始和结束时间戳
Java获取当天、当前月、当前年(今年)的开始和结束时间戳
393 0
|
Java
java判断当前时间是否在某个时间区间内(可精确到毫秒)
java判断当前时间是否在某个时间区间内(可精确到毫秒)
866 0
java判断当前时间是否在某个时间区间内(可精确到毫秒)
|
算法 搜索推荐 Java
线性时间选择(Top K)问题(Java)
线性时间选择(Top K)问题(Java)
263 0
线性时间选择(Top K)问题(Java)
|
XML 编解码 前端开发
JAVA中如何精确取到时间间隔
精确度到时间的工具。
128 0
JAVA中如何精确取到时间间隔
|
Java 程序员
Java中如何处理时间--Date类
在实际业务中,总会碰到关于时间的问题,例如收集当年的第一季度的数据。第一季度也就是当年的一月一日到三月三十一日。如何处理时间的逻辑,如果用字符串去处理显然不可以,Java有专门的处理时间的类,在此记录一下。Date 类有如下两个构造方法。Date():此种形式表示分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),使用该构造方法创建的对象可以获取本地的当前时间。
177 0
Java中如何处理时间--Date类
|
关系型数据库 MySQL Java
Linux系统下java程序获取的时间与系统时间不一致的问题
解决Linux系统下java程序获取的时间与系统时间不一致的问题
1381 0
Linux系统下java程序获取的时间与系统时间不一致的问题
|
Java
Java中格林尼治时间和时间戳的相互转换
Java中格林尼治时间和时间戳的相互转换
748 0
Java将CST的时间字符串转换成需要的日期格式字符串
Java将CST的时间字符串转换成需要的日期格式字符串