Java 获取日期前一年、月、日,指定日期的前几天,后几天

1. 方法1: 如果是 java8, 可以使用 LocalDate 获取


         // 获取当前日期前一天的日期
         LocalDate localDate = LocalDate.now().minusDays(1);//1代表提前多少天
         // 获取时间字符串如: 2023-03-01
         System.out.println(localDate.toString());
         // 获取当前年如 2023
         System.out.println(localDate.getYear());
         // 获取当前月如 3
         System.out.println(localDate.getMonthValue());
         // 获取当前天如 1
         System.out.println(localDate.getDayOfMonth());
         //获取前一天的日期
         String date = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));//转为String类型

LocalDate转化为指定格式的字符串

方法1


        LocalDate localDate = LocalDate.parse("2022-02-02");
        String date = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        System.out.println(date); //2022-02-02

方法2


        LocalDate localDate = LocalDate.parse("2022-02-02");
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String date = dtf.format(localDate);
        System.out.println(date); //2022-02-02

2. 方法2: 使用 Calendar


        //获取当前日期
        Date date = new Date();
        //将时间格式化成yyyy-MM-dd HH:mm:ss的格式
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //创建Calendar实例
        Calendar cal = Calendar.getInstance();
        //设置当前时间
        cal.setTime(date);
        //在当前时间基础上减一年
        cal.add(Calendar.YEAR, -1);  
        System.out.println(format.format(cal.getTime()));
        //在当前时间基础上减一月
        cal.add(Calendar.MONTH,-1);
        System.out.println(format.format(cal.getTime()));
        //同理增加一天的方法:
        cal.add(Calendar.DATE, 1);
        System.out.println(format.format(cal.getTime()));

3. 获取指定时间


        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//定义日期显示格式
        String now = sdf.format(new Date());//当前日期
        String nowMonthLateDay = getNextDays(now, "-1");//当前日期的前一天
        Calendar datees = Calendar.getInstance();
        String years = String.valueOf(datees.get(Calendar.YEAR)) + "-11-15";//获取当前年的11-15

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//定义日期显示格式
        Calendar c = Calendar.getInstance();
        c.add(Calendar.MONTH, -1);//当前月减去一个月
        String before = sdf.format(c.getTime());//上个月的当前日期
        String now = sdf.format(new Date());//当前日期
        String nowMonthLateDay = getNextDay(now, "-1");//当前日期的前一天
        String lateMonthLateDay = getNextDay(before, "-1");//上个月的当前日期的前一天
        Calendar cal = Calendar.getInstance();
//        int m=cal.get(Calendar.MONTH)+1;//获取当前月份
//        System.err.println("当前月份:"+m);
        String nowMonthFirstDay = getFirstDayOfMonth(1);//获取当前月份的第一天
        cal.add(Calendar.MONTH, -1);
        cal.set(Calendar.DAY_OF_MONTH, 1); //重写当前日期
        String lateMonthFirstDay = sdf.format(cal.getTime());//获取上个月的第一天

4. 获取当前年度,如果超过某个时间,就减去一年或者加上一年


  Date date = new Date();//获取日期
        SimpleDateFormat dateFormats= new SimpleDateFormat("yyyy");//日期格式
        String year=dateFormats.format(date);//获取当前年度
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        //把String转为LocalDate
        LocalDate localTime=LocalDate.parse(year+"-06-30",dtf);
        Integer years=Integer.valueOf(year);
        if (!LocalDate.now().isAfter(localTime)){//判断时间是否超过
            years=Integer.valueOf(year)-1;
        }
        System.err.println(years);
    }

5. 获取时间的工具类



    /**
     * 将短时间格式字符串转换为时间 yyyy-MM-dd
     *
     * @param strDate
     * @return
     */
    public static Date strToDate(String strDate) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        ParsePosition pos = new ParsePosition(0);
        Date strtodate = formatter.parse(strDate, pos);
        return strtodate;
    }

    /**
     * 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数
     */
    public static String getNextDay(String nowdate, String delay) {
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            String mdate = "";
            Date d = strToDate(nowdate);
            long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60;
            d.setTime(myTime * 1000);
            mdate = format.format(d);
            return mdate;
        } catch (Exception e) {
            return "";
        }
    }


    /**
     * 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数
     */
    public static String getNextDays(String nowdate, String delay) {
        try {
            SimpleDateFormat format = new SimpleDateFormat("-MM-dd");
            String mdate = "";
            Date d = strToDate(nowdate);
            long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60;
            d.setTime(myTime * 1000);
            mdate = format.format(d);
            return mdate;
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 获取当前小时
     *
     * @return
     */
    public static String getTimeShort() {
        SimpleDateFormat formatter = new SimpleDateFormat(" HH");
        Date currentTime = new Date();
        String dateString = formatter.format(currentTime);
        return dateString;
    }

    /**
     * 获取当前月第一天
     *
     * @param month
     * @return
     */
    public static String getFirstDayOfMonth(int month) {
        Calendar calendar = Calendar.getInstance();
        // 设置月份
        calendar.set(Calendar.MONTH, month - 1);
        // 获取某月最小天数
        int firstDay = calendar.getActualMinimum(Calendar.DAY_OF_MONTH);
        // 设置日历中月份的最小天数
        calendar.set(Calendar.DAY_OF_MONTH, firstDay);
        // 格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String firstDays = sdf.format(calendar.getTime());
        return firstDays;
    }
//g过去年度
    public  static String gerLateYear(Integer num){
        SimpleDateFormat format = new SimpleDateFormat("yyyy");
        Calendar c = Calendar.getInstance();
        //过去一年
        c.setTime(new Date());
        c.add(Calendar.YEAR, num);
        Date y = c.getTime();
        String year = format.format(y);
        return  year;

    }
    //判断是否超过指定时间
    public static boolean afterDate(String date) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");

        //把String转为LocalDate
        LocalDate localTime = LocalDate.parse(date, dtf);
        //判断当前日期是否大于指定日期
        return LocalDate.now().isAfter(localTime);
    }

6. 根据某个日期获取当前、上个月、下个月的第几天

 //获取上个月的第一天   date为参数值,业绩是你的日期时间  
    public static String  ParseException(String date) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
        Date dateExecute = sdf.parse(date);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dateExecute);
        // 将当前日期回退一个月
        calendar.add(Calendar.MONTH, -1);   // -1代表减去一个月
        // 设置为该月的第一天
        calendar.set(Calendar.DAY_OF_MONTH, 1);   //1 代表为第几天
        // 输出上个月的第一天
       return sdf.format(calendar.getTime());
    }

    //获取下个月的第一天
    public static String  ParseExceptions(String date) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date dateExecute = sdf.parse(date);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dateExecute);
        // 将当前日期超前一个月
        calendar.add(Calendar.MONTH, +1);
        // 设置为该月的第一天
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        // 输出上个月的第一天
        return sdf.format(calendar.getTime());
    }


    //获取当前月的第一天
    public static String  firstParseExceptions(String date) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date dateExecute = sdf.parse(date);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dateExecute);
        // 设置为该月的第一天
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        // 输出上个月的第一天
        return sdf.format(calendar.getTime());
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值