时间工具类之"获取相差天数"
一.时间工具类DateUtils之"获取相差天数"
1 /** 2 * 相差天数 3 * 4 * <p>TODO 方法功能描述 5 * 6 * @param startDate 开始时间 7 * @param endDate 结束时间 8 * @return 9 * long 10 */ 11 public static long numberOfDay(Timestamp startDate, Timestamp endDate) 12 { 13 14 long days = 0; 15 16 if (startDate == null) 17 { 18 return days; 19 } 20 21 if (endDate == null) 22 { 23 Calendar a = Calendar.getInstance(); 24 25 endDate = new Timestamp(a.getTimeInMillis()); 26 } 27 28 try 29 { 30 long between = (endDate.getTime() - startDate.getTime()) / 1000;// 除以1000是为了转换成秒 31 32 days = between / (24 * 60 * 60); 33 } 34 catch (Exception e) 35 { 36 37 } 38 39 return days; 40 }
案例
1 @Test 2 public void test() 3 { 4 // 初始开始时间:2021-3-9 5 Calendar calendar = Calendar.getInstance(); 6 calendar.set(2021,2,9); 7 long millis = calendar.getTimeInMillis(); 8 Timestamp timestamp1 = new Timestamp(millis); // timestamp1 = 2021-03-09 09:55:04.821 9 10 // 初始结束时间:当前时间2021-3-10 11 Timestamp timestamp2 = new Timestamp(System.currentTimeMillis()); // timestamp2 = 2021-03-10 09:55:04.826 12 13 // 使用工具类进行比较 14 long completeDiffDays = DateUtils.numberOfDay(timestamp1,timestamp2); // completeDiffDays = 1 15 16 // 5个月内完成的SKU不计算 17 if (completeDiffDays <= 150) 18 { 19 // 库存为0 20 int normalStock = 0; 21 System.out.println("normalStock = " + normalStock); // normalStock = 0 22 } 23 }
二.技术解析:new Timestamp(毫秒值); 时间格式化工具
创建Timestamp的几种方式
1 @Test 2 public void wzwtest(){ 3 // 以下三种都是获取当前格式,只是时间戳的声明方式不一样 4 // 获取当前时间格式(时间戳),保留秒后面3为数 5 Timestamp time1 = new Timestamp(System.currentTimeMillis()); // 2021-03-10 09:31:52.528 6 7 Timestamp time2 = new Timestamp(new Date().getTime()); // 2021-03-10 09:31:52.528 8 9 Timestamp time3 = new Timestamp(Calendar.getInstance().getTimeInMillis()); // 2021-03-10 09:31:52.528 10 11 //不建议使用:获取去指定时间 2011-12-11 11:11:11.0 12 Timestamp time4 = new Timestamp(2011-1900,11,11,11,11,11,0); 13 }
三.获取相差天数【常用3.0规范】
案例
@Test public void test() { // 相差的天数 LocalDateTime state = LocalDateTime.now(); LocalDateTime end = LocalDateTime.now().plusDays(1); // 开始时间:较小时间 // 结束时间:较大时间 long days = Duration.between(state, end).toDays(); System.out.println("相差的天数 = " + days); }
结果图
注意
这里输入的时间类型要是LocalDateTime ,如果输入LocalDate类型会报错:Unsupported unit: Seconds
四.补充:获取指定时间戳,可以参考以下案例或我写的博客
1.Calendar类
先由getInstance获取Calendar对象,然后用clear方法将时间重置为(1970.1.1 00:00:00),接下来用set方法设定指定时间,最后用getTimeMillis获取毫秒值。
1 @Test 2 public void wzwtest(){ 3 // 创建Calendar对象 4 Calendar calendar = Calendar.getInstance(); 5 // 清除原有数据 6 calendar.clear(); 7 // 设置要转换的时间,注意月份,外国是从0开始的 8 calendar.set(2021,2,15); 9 // 获取2021年3月15号的时间戳 10 long millis = calendar.getTimeInMillis(); 11 // 格式时间戳 12 Timestamp timestamp1 = new Timestamp(millis); 13 14 System.out.println("timestamp1 = " + timestamp1); //timestamp1 = 2021-03-15 00:00:00.0 15 System.out.println("millis = " + millis); // millis = 1615737600000 16 }
2.DateFormat类,利用SimpleDateFormat解决系统时间初始(格式化/解析)问路径题
路径:https://www.cnblogs.com/saoge/p/13567215.html
* 博客文章部分截图及内容来自于学习的书本及相应培训课程,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。
* 备注:王子威
* 我的网易邮箱:wzw_1314_520@163.com