• 【Android】JDK8标准下计算两个日期的时间差


    无意中看到黑马的视频,jdk8后引入的标准库Time把Date和Calendar两个库替代了,就学习了一下,果然方便了很多。

     /**
         * 计算两个日期之间的差值
         * B-A
         * 更新JDK8的计算方法,更准确兼容性更好
         * 显然这个方法都不适合其他时区···
         * */
        public static long countDayToInt(String dateA, String dateB){
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
                return ChronoUnit.DAYS.between(LocalDate.parse(dateA),LocalDate.parse(dateB));
    
            }else {
                String[] splitdate = dateA.split("-");
                String[] splitdateB = dateB.split("-");
                Calendar a = Calendar.getInstance(),
                        b = Calendar.getInstance();
                a.set(Integer.parseInt(splitdate[0]), Integer.parseInt(splitdate[1]) - 1, Integer.parseInt(splitdate[2]));
                b.set(Integer.parseInt(splitdateB[0]), Integer.parseInt(splitdateB[1]) - 1, Integer.parseInt(splitdateB[2]));
                return (b.getTimeInMillis() - a.getTimeInMillis())
                        / (1000 * 60 * 60 * 24);
            }
    
        }

    另外在build.app中设置

    compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }

    大功告成!

    如果要获取现在的时间来进行计算也很简单,直接使用

     LocalDate.now()

    如果你的应用支持多语言,而你的日期格式化是自己设定的,如2020-4-9这种形式的,你可以指定解析器:

                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                return ChronoUnit.DAYS.between(LocalDate.parse(dateA,formatter),LocalDate.parse(dateB,formatter));
  • 相关阅读:
    IE, FireFox, Opera 浏览器支持CSS实现Alpha半透明的方法
    5个CSS3技术实现设计增强
    SQL Server 2005 中的分区表和索引
    推荐12款可用于前端开发的免费文本编辑器
    960 Grid System
    初识Byte
    在线制作网站
    sqlserver操作符篇 优化
    ASP.NET 异常处理
    Photoshop 隐藏的快捷键
  • 原文地址:https://www.cnblogs.com/robotpaul/p/12624628.html
Copyright © 2020-2023  润新知