时间工具(当月第一天,最后一天,当天最早和最晚,季度,年月日时分秒)

1,获取当月最后一天,精确到秒


    public static Date getMaxMonthDate(String date) {
        //格式化为年月
        Calendar calendar = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            calendar = Calendar.getInstance();
            calendar.setTime(sdf.parse(date));
            calendar.add(Calendar.MONTH, 1);
            //在当前月的下一月基础上减去1毫秒
            calendar.add(Calendar.MILLISECOND, -1);
            calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        } catch (ParseException e) {
            log.error("getMaxMonthDate: error", e);
        }
        return  calendar.getTime();
    }
    

输出:
在这里插入图片描述

2,获取当月第一天,精确到秒


    public static Date getMinMonthDate(String date) throws ParseException {
        //格式化为年月
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(sdf.parse(date));
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        return calendar.getTime();
    }

3,根据当前日期,获取季度数据

说明:

第一季度:1,2,3
第二季度:4,5,6
第三季度:7,8,9
第四季度:10,11,12


    public static Map<String, Integer> getQuarterAndYearByDate(String date) throws ParseException{
        if(date == ""|| "".equals(date)){
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        Date datePar = sdf.parse(date);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(datePar);

        Integer year = calendar.get(Calendar.YEAR);
        int m = calendar.get(Calendar.MONTH) + 1;

        Integer quarter = null;
        if (m >= 1 && m <= 3) {
            quarter = 1;
        }
        if (m >= 4 && m <= 6) {
            quarter = 2;
        }
        if (m >= 7 && m <= 9) {
            quarter = 3;
        }
        if (m >= 10 && m <= 12) {
            quarter = 4;
        }
        HashMap<String, Integer> map = new HashMap<>();
        map.put("year",year);
        map.put("quarter",quarter);
        return map;
    }

4,提取日期的年,月,日,时,分,秒


    public static void getDateTime(String date) throws ParseException {
        
        String date = "2025-12-09 12:30:49";
        System.out.println("date = " + date);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(sdf.parse(date));

        Integer year = calendar.get(Calendar.YEAR);
        System.out.println("year = " + year);

        Integer month = calendar.get(Calendar.MONTH) + 1;
        System.out.println("month = " + month);

        Integer day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("day = " + day);

        Integer hour=calendar.get(Calendar.HOUR_OF_DAY);
        System.out.println("hour = " + hour);

        Integer minute=calendar.get(Calendar.MINUTE);
        System.out.println("minute = " + minute);

        Integer second=calendar.get(Calendar.SECOND);
        System.out.println("second = " + second);
    }
    

输出:
在这里插入图片描述

5,获得某天最大时间 2020-02-19 23:59:59


    // 获得某天最大时间 2020-02-19 23:59:59
    public static Date getEndOfDay(String date) throws ParseException {
        LocalDateTime endOfDay = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date parse = sdf.parse(date);
            LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(parse.getTime()), ZoneId.systemDefault());
            endOfDay = localDateTime.with(LocalTime.MAX);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
    }

6,获得某天最小时间 2020-02-17 00:00:00

    // 获得某天最小时间 2020-02-17 00:00:00
    public static Date getStartOfDay(String date) throws ParseException {
        LocalDateTime startOfDay = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date parse = sdf.parse(date);
            LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(parse.getTime()), ZoneId.systemDefault());
            startOfDay = localDateTime.with(LocalTime.MIN);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
    }

或者更简单点


// 利用Apache lang包快速获取凌晨0点0分0秒,23点59分59秒字符串
		System.out.println(DateFormatUtils.format(new Date(), "yyyy-MM-dd 00:00:00"));
		System.out.println(DateFormatUtils.format(new Date(), "yyyy-MM-dd 23:59:59"));
		

7,String和Date类型互相转换


    public static Date StringToDate(String date) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        Date parse = sdf.parse(date);

        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(parse.getTime()), ZoneId.systemDefault());
        LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);
        return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
    }

    public static String DateToString(Date date, String format){
        String formatStr = ToolUtil.isEmpty(format) ? "yyyy-MM-dd HH:mm:ss" : format;
        SimpleDateFormat  simpleDateFormat = new SimpleDateFormat(formatStr);
        return simpleDateFormat.format(date);
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值