Java比较时间相差几个月

Java比较时间相差几个月

本来给自己留个底来着,被大佬看到后,教育了,为了不继续误导大家,更新一下,嘿嘿

    /**
     * 比较两个时间相差几月
     */
    public static void main(String[] args) {
        YearMonth yearMonth = YearMonth.of(2018, 6);
        System.out.println(MONTHS.between(yearMonth, YearMonth.now()));
    }

-----------分界线---------------

今天做项目遇到返回距离当前月份6个月的数据

 

方案1::java1.8新特性YearMonth的compareto方法

同一年进行比较,如当前是2017年8月,传入参数2017,2,打印:6

但非同一年进行比较,如传入参数2016,2,期望打印:18,但是实际打印为:1

于是继续测试,传入参数2015,2,期望打印:30,但是实际打印为:2

可见 YearMonth的compareto方法当是同一年时返回值为相差几月,当非同一年时返回相差几年,并非当前需要的方法。

 

    /**
     * 利用YearMonth方法compareTo比较两个时间相差几月
     * @param year 年
     * @param month 月
     */
    public void testYearMonth(int year, int month) {
        YearMonth yearMonth = YearMonth.of(year, month);
        //当前年月
        YearMonth yearMonthNow = YearMonth.now();
        int difference = yearMonthNow.compareTo(yearMonth);
        System.out.println(difference);
    }

 

 

方案2:利用Calender先比较年,再比较月,将相差的几年乘以12加上相差的月份便的总月份,解决!

 

    /**
     * 比较时间与当前时间距离几个月
     *
     * @param dateStr 传入时间字符串,格式yyyyMMddHHmmss
     * @return
     */
    private int compareWithNow(String dateStr) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        String afferentYearMonth = DateUtil.getStringSim(dateStr, "yyyyMMddHHmmss", "yyyy-MM");
        String nowYearMonth = YearMonth.now().toString();
        Calendar afferent = Calendar.getInstance();
        Calendar now = Calendar.getInstance();
        try {
            afferent.setTime(sdf.parse(afferentYearMonth));
            now.setTime(sdf.parse(nowYearMonth));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        int year = (now.get(Calendar.YEAR) - afferent.get(Calendar.YEAR)) * 12;
        int month = now.get(Calendar.MONTH) - afferent.get(Calendar.MONTH);
        return Math.abs(year + month);
    }

 

 

 

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Java函数中文速查手册是一本为Java程序员提供帮助和参考的工具书。它主要包含了Java中常用函数的用法和示例,方便程序员在开发过程中快速查询和应用。 这本手册首先按照函数的功能进行分类,比如数学函数、字符串处理函数、日期时间函数等等。每个功能分类下又细分为具体的函数列表,例如数学函数中包含了常见的四则运函数、取整函数、对数函数等。 在每个函数的详细介绍中,手册会提供该函数的语法格式、参数说明和返回值类型。同时,还会给出一些常见的使用示例,帮助程序员更好地理解和应用这些函数。 这本手册不仅仅是一个简单的函数列表,更帮助程序员理解函数的作用和用法,它会解释一些常见的用例,如何传递参数、如何处理函数的返回值等等。这些详细的说明和示例可以帮助程序员快速上手这些函数,并正确地使用它们。 对于初学者而言,这本速查手册是一个宝贵的参考工具,因为它可以帮助他们更快地掌握常用函数的用法,节省他们在查阅文档和搜索引擎上的时间。 对于有经验的开发者来说,这本手册也是一个很方便的参考工具,因为它提供了快速查找函数用法和示例的功能,可以大大提高他们的开发效率。 综上所述,Java函数中文速查手册是一本为Java程序员提供帮助和参考的工具书,它可以帮助他们更好地理解和应用常用函数,提高开发效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值