java天数计算函数(当前月天数、某月总天数及某月剩余天数)4种方法实现代码

 更新时间:2023年10月12日 10:34:41   作者:左眼看成爱  
日常开发中会遇到关于日期的计算,比如当月的天数、两日期之间的天数、当月剩余天数等等,这篇文章主要给大家介绍了关于java天数计算函数(当前月天数、某月总天数及某月剩余天数)4种方法实现的相关资料,需要的朋友可以参考下

1,Java8 LocalDate

    public static int getDaysOfMonth(String dateStr) {
        LocalDate date = LocalDate.parse(dateStr + "-01");
        return date.lengthOfMonth();
    }

2,利用日历函数

    public static int getDaysOfMonth(String dateStr) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(sdf.parse(dateStr));
        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    }

3,也是利用日历函数,但是不需要 throws ParseException

 
    /**
     * 获取日期当月的天数
     * @param dateStr yyyy-MM 或者yyyy-MM-dd
     * */
    public static int getDaysByDate(String dateStr){
        int year= Integer.parseInt(dateStr.substring(0,4));
        int month=Integer.parseInt(dateStr.substring(5,7));
        Calendar c = Calendar.getInstance();
        c.set(year, month, 0);
        return c.get(Calendar.DAY_OF_MONTH);
    }

测试样例代码: 

        String dateStr = "2023-01";
        int days = getDaysOfMonth(dateStr);
        System.out.println(dateStr + " has " + days + " days.");

4,当月剩余天数

 
    /**
     * 当月剩余天数
     * @param date 格式yyyy-MM-dd
     * */
    public static Integer monthEndNum(String date){
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
        Date dateTime = null;
        try {
            dateTime = format.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar c = Calendar.getInstance();
        c.setTime(dateTime);
        int today = c.get(Calendar.DAY_OF_MONTH);
        int last = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        return last - today;
    }
  public static void main(String[] args) {
        Integer days = monthEndNum("2023-01-20");
        System.out.println("2023年1月剩余天数:"+days);
    }

5,获取当前月天数

    //获取当前月的天数
    public static int getDaysOfCurrentMonth() {
        Calendar calendar = Calendar.getInstance();
        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    }

测试代码:

    public static void main(String[] args) throws ParseException {
        Date currentTime = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(currentTime);
        System.out.println(dateString);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
        String dateString2 = dateFormat.format(currentTime);
        System.out.println(dateString2);
        Date date1 = dateFormat.parse(dateString2);
        String dateString3 = formatter.format(date1);
        System.out.println(dateString3);
        // 将日期字符串转换为LocalDate对象
        LocalDate date = LocalDate.parse("2023-04-06");
        // 将LocalDate对象格式化为指定格式的字符串
        DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy年M月d日");
        String formattedDate = date.format(formatter1);
        System.out.println(formattedDate);
        // 将格式化后的字符串转换为LocalDate对象
        LocalDate parsedDate = LocalDate.parse(formattedDate, formatter1);
        // 将LocalDate对象转换为指定格式的字符串
        String parsedDateString = parsedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        System.out.println(parsedDateString);
        // 确认两个日期字符串相等
        assert parsedDateString.equals("2023-04-06");
        // 确认两个LocalDate对象相等
        assert parsedDate.equals(date);
        System.out.println("---------------------");
        String sdate="2023-04-06";
        String sdate2="2023年4月6日";
        String sdate3="2023-04";
        String sdate4="2023年4月";
        System.out.println(convertDateToChs(sdate));
        System.out.println(convertToChinese(sdate));
        System.out.println((convertDateToEn(sdate2)));
        System.out.println((convertDateToEnglish(sdate2)));
        System.out.println((convertToShortChinese(sdate3)));
        System.out.println((convertToShortEnglish(sdate4)));
        String dateStr = "2023-02";
        int days = getDaysByDate(dateStr);
        System.out.println(dateStr + " has " + days + " days.");
        System.out.println("今年有" +   getDaysInCurrentYear() + " days.");
        System.out.println("今年已过去" +   getDaysPassedInCurrentYear() + " days.");
        System.out.println("今年剩余" +   getDaysEndInCurrentYear() + " days.");
    }

测试效果截图:

总结

到此这篇关于java天数计算函数(当前月天数、某月总天数及某月剩余天数)4种方法实现的文章就介绍到这了,更多相关java天数计算函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java SpEL表达式注入入门学习示例教程

    Java SpEL表达式注入入门学习示例教程

    SpEL是Spring框架特有的表达式语言,SpEL注入是Java Web题最常见的考点之一,因为它逻辑清晰,利用方式很像 PHP 的 eval,本文给大家介绍Java SpEL表达式注入入门学习示例教程,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • java中计算字符串长度的方法及u4E00与u9FBB的认识

    java中计算字符串长度的方法及u4E00与u9FBB的认识

    字符串采用unicode编码的方式时,计算字符串长度的方法找出UNICODE编码中的汉字的代表的范围“\u4E00” 到“\u9FBB”之间感兴趣的朋友可以参考本文,或许对你有所帮助
    2013-01-01
  • java数据类型和运算符的深入讲解

    java数据类型和运算符的深入讲解

    这篇文章主要给大家介绍了关于java数据类型和运算符的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 详解Java-Jackson使用

    详解Java-Jackson使用

    这篇文章主要介绍了Java-Jackson使用详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 《阿里巴巴 Java开发手册》读后感小结

    《阿里巴巴 Java开发手册》读后感小结

    这篇文章主要介绍了《阿里巴巴 Java开发手册》读后感小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Spring多线程的使用以及问题详解

    Spring多线程的使用以及问题详解

    在我们开发系统过程中,经常会处理一些费时间的任务(如:向数据库中插入大量数据),这个时候就就需要使用多线程,下面这篇文章主要给大家介绍了关于Spring多线程的使用以及问题的相关资料,需要的朋友可以参考下
    2022-05-05
  • Java设计模式之简单工厂 工厂方法 抽象工厂深度总结

    Java设计模式之简单工厂 工厂方法 抽象工厂深度总结

    设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案
    2021-09-09
  • 使用nacos增加修改配置实时生效方式

    使用nacos增加修改配置实时生效方式

    文章介绍了如何在Nacos配置中心实现动态配置,包括添加或修改配置、使用`@RefreshScope`注解刷新Bean属性、扩展动态配置参数等
    2026-01-01
  • java 8如何自定义收集器(collector)详解

    java 8如何自定义收集器(collector)详解

    这篇文章主要给大家介绍了关于java 8如何自定义收集器(collector)的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • Spring中TransactionSynchronizationManager的使用详解

    Spring中TransactionSynchronizationManager的使用详解

    这篇文章主要介绍了Spring中TransactionSynchronizationManager的使用详解,TransactionSynchronizationManager是事务同步管理器,监听事务的操作,来实现在事务前后可以添加一些指定操作,需要的朋友可以参考下
    2023-09-09

最新评论