关于DateUtil时间的获取

关于DateUtil时间的获取

//获取到第二天凌晨的时间戳
public static Date getEndData() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        return calendar.getTime();
    }

    //取到最近的整点半时间 如11:32  得到11:00  11:12
    public static Date getStartHalfTime() {
        Calendar ca = Calendar.getInstance();
        if (ca.get(Calendar.MINUTE) < 30) {
            ca.set(Calendar.MINUTE, ca.get(Calendar.MINUTE) < 30 ? 30 : 00);
            ca.set(Calendar.SECOND, 0);
            ca.set(Calendar.HOUR_OF_DAY, ca.get(Calendar.HOUR_OF_DAY) - 1);
            return ca.getTime();
        } else {
            ca.set(Calendar.MINUTE, ca.get(Calendar.MINUTE) < 30 ? 30 : 00);
            ca.set(Calendar.SECOND, 0);
            ca.set(Calendar.HOUR_OF_DAY, ca.get(Calendar.HOUR_OF_DAY));
            return ca.getTime();
        }
    }

    //获取到当前时间整数  如 11:12  获得11:30  11:31获的12:00
    public static Date getStartHalfTestTime() {
        Date end = getHalfendDate();
        return end;
    }

    //取到最近的整点半时间 如11:32 11:30 或 11:12   11:00
    public static Date getEndHalfDate() {
        Calendar ca = Calendar.getInstance();
        ca.set(Calendar.MINUTE, ca.get(Calendar.MINUTE) < 30 ? 00 : 30);
        ca.set(Calendar.SECOND, 0);
        return ca.getTime();
    }

    //取到最近的整点时间 如11:02  得到11:00
    public static Date getStartTestDate() {
        Calendar ca = Calendar.getInstance();
        ca.set(Calendar.MINUTE, 00);
        ca.set(Calendar.SECOND, 0);
        return ca.getTime();
    }

    //取到最近的整点时间如11:02  得到12:00
    public static Date getEndTestDate() {
        Calendar ca = Calendar.getInstance();
        ca.set(Calendar.MINUTE, 60);
        ca.set(Calendar.SECOND, 0);
        return ca.getTime();
    }

    //获的一个整点的 开始时间和结束时间  相差一小时   如11:02  开始时间11:00  结束时间12:00
    public static Pair<String, String> getTestStartDate(Date periodStart, Date periodEnd) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        log.debug("活动开始时间"+formatter.format(periodStart));
        log.debug("活动结束时间"+formatter.format(periodEnd));
        Date startDate = getStartTestDate();
        Date endDate = getEndTestDate();
        Date startTime = periodStart.getTime() > startDate.getTime() ? periodStart : startDate;
        Date endTime = periodEnd.getTime() > endDate.getTime() ? endDate : periodEnd;
        if(startTime.getTime()>endTime.getTime()){
            startTime = periodStart;
        }
        return Pair.of(formatter.format(startTime), formatter.format(endTime));
    }

    //获的一个整点的 开始时间和结束时间  相差一小时   如11:02  开始时间10:00  结束时间11:00
    public static Pair<String, String> getTestEndDate(Date periodStart, Date periodEnd) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date startDate = getStartTestHalfTime();
        Date endDate = getEndTestHalfTime();
        Date startTime = periodStart.getTime() > startDate.getTime() ? periodStart : startDate;
        Date endTime = periodEnd.getTime() > endDate.getTime() ? endDate : periodEnd;
        return Pair.of(formatter.format(startTime), formatter.format(endTime));
    }

    //取到最近的整点 如11:32  得到10:00
    public static Date getStartTestHalfTime() {
        Calendar ca = Calendar.getInstance();
        ca.set(Calendar.MINUTE, 00);
        ca.set(Calendar.SECOND, 0);
        ca.set(Calendar.HOUR_OF_DAY, ca.get(Calendar.HOUR_OF_DAY) - 1);
        return ca.getTime();
    }

    //取到最近的整点 如11:32  得到10:00
    public static Date getEndTestHalfTime() {
        Calendar ca = Calendar.getInstance();
        ca.set(Calendar.MINUTE, 00);
        ca.set(Calendar.SECOND, 0);
        ca.set(Calendar.HOUR_OF_DAY, ca.get(Calendar.HOUR_OF_DAY));
        return ca.getTime();
    }


    //取到最近的整点半时间 如11:32  得到11:00 和11:30    或 11:12  得到 10:30 和11:00   如果比开始时间小的话查询开始时间,如果大的话,取结束时间
    public static Pair<String, String> queryHourName(Date periodStart, Date periodEnd) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date start = getStartHalfTime();
        Date end = getEndHalfDate();
        String startTime;
        String endTime;
        if (start.getTime() > periodStart.getTime()) {
            startTime = formatter.format(start);
        } else {
            startTime = formatter.format(periodStart);
        }
        if (end.getTime() < periodEnd.getTime()) {
            endTime = formatter.format(end);
        } else {
            endTime = formatter.format(periodEnd);
        }
        System.out.println("startTime = " + startTime);

        log.debug("查询时间startTime =" + startTime + "  endTime =" + endTime);

        return Pair.of(startTime, endTime);
    }


    //获取到今天凌晨和现在时间的整点   如结尾时间为11:31  获得11:30 12:00  
    public static Pair<String, String> getEndHalfDate(Date periodStart, Date periodEnd) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //11:31  得到11:30
        Date date1 = getEndHalfDate();
        //11:31  获得12:00
        Date end = getHalfendDate();
        Date startTime = periodStart.getTime() < date1.getTime() ? date1 : periodStart;
        Date endTime = periodEnd.getTime() > end.getTime() ? end : periodEnd;
       
        return Pair.of(formatter.format(startTime), formatter.format(endTime));
    }

    //获取到当前时间的整点  如11:02  得到11:30
    public static Date getHalfendDate() {
        //当前系统时间
        Calendar ca = Calendar.getInstance();
        System.out.println("ca.get(Calendar.MINUTE) =" + ca.get(Calendar.MINUTE));

        ca.set(Calendar.MINUTE, ca.get(Calendar.MINUTE) < 30 ? 30 : 60);
        ca.set(Calendar.SECOND, 0);
        return ca.getTime();
    }

    //获取到当天时间的23:59:59
    public static Date getEndOfDay(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
        LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
        return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
    }

    //获取到当天凌晨时间的00:00:00
    public static Date getStartOfDay(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
        LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);
        return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
    }

    //取到当前时间的00:00:00 和23:59:59  如果比开始时间小的话查询开始时间,如果大的话,取结束时间
    public static Pair<String, String> getOneDay(Date periodStart, Date periodEnd) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        Date startDate = getStartOfDay(date);
        Date endDate = getEndOfDay(date);
        Date startTime = periodStart.getTime() > startDate.getTime() ? periodStart : startDate;
        Date endTime = periodEnd.getTime() > endDate.getTime() ? endDate : periodEnd;
        return Pair.of(formatter.format(startTime), formatter.format(endTime));
    }

    //取到昨天的00:00:00 23:59:59 如1:01  得到昨天的00:00:00和23:59:59  如果开始时间和结束时间是同一天的话就获取到当前时间的开始时间和结束时间  
    public static Pair<String, String> getFutureDate(Date periodStart, Date periodEnd) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //得到昨天的现在时间
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -1);
        Date nowTime = cal.getTime();
        System.err.println("nowTime =" + nowTime);

        Date startDate = getStartOfDay(nowTime);
        //昨天的23:59:59
        Date endDate = getEndOfDay(nowTime);
        Date startTime = periodStart.getTime() > startDate.getTime() ? periodStart : startDate;

        Date endTime;
        if (startTime.getTime() > endDate.getTime()) {
            endTime = periodEnd;
        } else {
            endTime = periodEnd.getTime() > endDate.getTime() ? endDate : periodEnd;
        }

        return Pair.of(formatter.format(startTime), formatter.format(endTime));
    }
	
    public static void main(String[] args) {
        try {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date periodStart = formatter.parse("2019-07-03 16:00:00");
            Date periodEnd = formatter.parse("2019-07-03 22:00:00");
            Pair<String, String> par = getTestStartDate(periodStart, periodEnd);
            System.err.println(par.getFirst() + "==============>" + par.getSecond());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值