一.时间工具类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. tunneling socket could not be established, cause=connect ECONNREFUSED 127.0.0.1:56281 npm ERR! network This is most likely not a problem with npm itself npm ERR! network and is related to network

    tunneling socket could not be established, cause=connect ECONNREFUSED 127.0.0.1:56281npm ERR! networ ...

  2. 一张图看懂IaaS, PaaS和SaaS的区别

    转至:https://blog.csdn.net/liujg79/article/details/84453736 编译:老夫子 原文:https://www.bmc.com/blogs/saas-v ...

  3. 常用的一些性能查询sql语句

    转至:https://blog.csdn.net/bosschen/article/details/84829912 --查看表锁 select * from sys.v_$sqlarea where ...

  4. Objective-C 基础教程第五章,复合

    目录 Objective-C 基础教程第五章,复合 什么是复合? Car程序 自定义NSLog() 存取方法get Set Tires(轮胎) 存取方法 Car类代码的其他变化 扩展Car程序 复合还 ...

  5. SpringBoot进阶教程(七十三)整合elasticsearch

    Elasticsearch 是一个分布式.高扩展.高实时的搜索与数据分析引擎.它能很方便的使大量数据具有搜索.分析和探索的能力.充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更 ...

  6. 学习java Markdown语法

    Markdown学习 标题: #+标题名字+回车 二级标题 ##+标题名字+回车 三级四级一次类推,最多六级 字体 HELLO,World ! HELLO,World ! HELLO,World ! ...

  7. CoLAKE: 如何实现非结构性语言和结构性知识表征的同步训练

    原创作者 | 疯狂的Max 论文CoLAKE: Contextualized Language and Knowledge Embedding 解读 01 背景与动机 随着预训练模型在NLP领域各大任 ...

  8. linux echo用法和实例

    echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串.linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下 ...

  9. call、apply 和 bind

    call().apply().bind() 都是用来重定义 this 这个对象的! var obj1 = { username: "HuiTaiLang", fn: functio ...

  10. i++ 反编译码

    1.特点: 操作数栈,主要用于保存计算过程中的结果,同时作为集计算过程中变量临时的存储空间. 操作数栈就是JVM执行引擎的一个工作区,当方法执行开始,一个新栈帧也会随之被创建,这个方法的操作数栈是空的 ...