一.时间工具类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 }

三.补充:获取指定时间戳,可以参考以下案例或我写的博客

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

时间工具类之"获取相差天数"的更多相关文章

  1. java时间工具类

    在项目中,很多地方需要根据时间获取相应的数据,将时间格式化,或者时间比较等相关操作.一个良好的工具类不仅可以减少代码冗余,还能促进业务处理,加快进度. /** * @author: lxw * @Da ...

  2. Java8 ,LocalDate,LocalDateTime处理日期和时间工具类,

    Java8 ,LocalDate,LocalDateTime处理日期和时间工具类 1.获取今天的日期 2.在Java 8 中获取年.月.日信息 3.在Java 8 中处理特定日期 4.在Java 8 ...

  3. 小记Java时间工具类

    小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...

  4. 超详细的Java时间工具类

    package com.td.util; import java.sql.Timestamp; import java.text.ParseException; import java.text.Pa ...

  5. Apache Commons Lang之日期时间工具类

    码农不识Apache,码尽一生也枉然. FastDateFormat FastDateFormat是一个快速且线程安全的时间操作类,它完全可以替代SimpleDateFromat.因为是线程安全的,所 ...

  6. jdk1.8 时间工具类,可以满足基本操作

    时间工具类 public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd"; public static final S ...

  7. 代码片段:基于 JDK 8 time包的时间工具类 TimeUtil

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “知识的工作者必须成为自己时间的首席执行官.” 前言 这次泥瓦匠带来的是一个好玩的基于 JDK ...

  8. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  9. 基于Java8的日期时间工具类DateTimeFormatter

    原文:https://blog.csdn.net/qq_36596145/article/details/85331002 import java.time.Instant; import java. ...

随机推荐

  1. mybatis plus框架的@TableField注解不生效问题总结

    一.问题描述 最近遇到一个mybatis plus的问题,@TableField注解不生效,导致查出来的字段反序列化后为空 数据库表结构: CREATE TABLE `client_role` ( ` ...

  2. C++二维动态数组

    //创建 int **a=new int *[n]; for(i=0;i<n;i++) a[i]=new int[n]; // -- // 删除 for(i=0;i<n;i++) dele ...

  3. 关于Xgboost的笔记

  4. Goland sync.Map大白话解析

    Goland sync.Map大白话解析 代码解析链接:https://mp.weixin.qq.com/s/H5HDrwhxZ_4v6Vf5xXUsIg 建议对照参考链接代码食用 结构体 可以简单理 ...

  5. 矩池云上使用Visdom可视化图像说明

    租用机器添加默认端口 点击展开高级选项 点击添加端口配置 添加Visdom默认端口,选择 http 端口填入 8097 进入环境安装并使用 JupyterLab 链接 是本次实验用来安装实验的工具 H ...

  6. Spring Cloud Ribbon 中的 7 种负载均衡策略

    负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者--客户端负载均衡器. 服务端负载均衡器的问题是,它提供了更强的流量控制权,但 ...

  7. tp5手机号验证码发送及验证

    原文链接:https://blog.csdn.net/weixin_43389208/article/details/119153323 为什么使用短信: 场景:通常在使用手机号注册时需要发送短信验证 ...

  8. 原生JS实现拼图游戏

    最近无聊,练练原生JS:实现拼图游戏.两种玩法:第一种是单击元素进行交换位置:第二种是拖拽元素进行位置交换.首先需要上传图片并进行回显(需要用到FileReader):下面是部分截图: 可以自行设置切 ...

  9. 高并发之 API 接口,分布式,防刷限流,如何做?

    在开发分布式高并发系统时有三把利器用来保护系统:缓存.降级.限流 缓存 缓存的目的是提升系统访问速度和增大系统处理容量 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解 ...

  10. Java基础——继承的特点

    继承的优点: 1.提高了代码的复用性(多个类相同的成员可以放到一个类中) 2.提高了代码的维护性(如果要修改方法,只需要修改父类中的即可) 继承的缺点: 1.继承让类与类产生了关系,类的耦合性增强了, ...