北京企业建网站,网站建设模块是什么意思,企业信息系统查询,设计网页多少钱一个页面这里不会记录纯原生写法#xff0c;因为现在基本都是被工具类封装好的#xff0c;所以会记录好用的工具类来简化开发#xff0c;当然自己可以研究写一个年月日各自做减法的纯原生工具类。
踩坑处(System.currentTimeMillis) 这里指的是使用System.currentTimeMillis()方法。… 这里不会记录纯原生写法因为现在基本都是被工具类封装好的所以会记录好用的工具类来简化开发当然自己可以研究写一个年月日各自做减法的纯原生工具类。
踩坑处(System.currentTimeMillis) 这里指的是使用System.currentTimeMillis()方法。此方法是返回当前系统/计算机时间。所以并不是从当天的0时0分0秒开始计时的个人认为是从当天的晚上最后一刻计数这里可以去看一下C语言的源码至于我为什么会这么说下面会用代码来验证。这里会看得出来输出的天数为0将2023-10-27改为2023-10-26后控制台也是输出0这里就不做演示了。
public void test() throws ParseException {// 由于我写这篇博文是26号 所以这里创建27号的时间String time 2023-10-27;// 时间格式化Date date new SimpleDateFormat(yyyy-MM-dd).parse(time);// 差距天数: 0System.out.println(差距天数: (System.currentTimeMillis() - date.getTime()) / (1000 * 60 * 60 * 24));
} 踩坑二 这里也不能直接使用new Date()创建对象是因为其底层直接调用System.currentTimeMillis()方法所以其实和上面的代码是一个意思只不过经由Date类进行了一层包装。
public void test() throws ParseException {String time 2023-10-27;Date date new SimpleDateFormat(yyyy-MM-dd).parse(time);// 差距天数: 0System.out.println(差距天数: (new Date().getTime() - date.getTime()) / (1000 * 60 * 60 * 24));
}
踩坑三
public void test() throws ParseException {SimpleDateFormat simpleDateFormat new SimpleDateFormat(yyyy-MM-dd);Date date simpleDateFormat.parse(2023-10-27);// 差距天数: 0System.out.println(差距天数: DateUtil.between(new Date(), date, DateUnit.DAY));
} 对于以上踩坑的原因是因为Date对象会取到时分秒为了准确的验证时间的差距必须是0时0分0秒所以直接采用Date对象来比较必然是不行的。
解决方案一 将当前时间格式化为字符串再解析为日期Date - String - Date
public void test() throws ParseException {// 获取当前时间Date now new Date();// 定义日期格式SimpleDateFormat dateFormatter new SimpleDateFormat(yyyy-MM-dd);// 将日期格式化为字符串String format dateFormatter.format(now);// 差距天数: -1System.out.println(差距天数: (dateFormatter.parse(format).getTime() - dateFormatter.parse(2023-10-27).getTime()) / (24 * 60 * 60 * 1000));
} 解决方案二(ChronoUnit)
public void test() {LocalDate localDate01 LocalDate.of(2023, 10, 26);LocalDate localDate02 LocalDate.of(2023, 10, 27);// 第一个参数距离第二参数相距的天数// 差距天数: 1System.out.println(差距天数: ChronoUnit.DAYS.between(localDate01, localDate02));LocalDateTime localDateTime01 LocalDateTime.of(2023, 10, 26, 0, 0);LocalDateTime localDateTime02 LocalDateTime.of(2023, 10, 27, 0, 0);// 差距天数: 1System.out.println(差距天数: ChronoUnit.DAYS.between(localDateTime01, localDateTime02));
}