一.时间工具类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. idea maven: invalid class root

    maven导入依赖没有问题,但是项目lib的类飘红,实际导入的类中有一些没有,这是idea的问题,重启idea,发现需要重新导入项目,重新导入后问题解决. 原因:可能之前误删了项目中idea的一些文件 ...

  2. Liunxa安装Nignx,Git

    Linux安装Nignx 1.安装依赖 执行语句 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel open ...

  3. java中如何将嵌套循环性能提高500倍

    java中如何将嵌套循环性能提高500倍 转载请注明出处https://www.cnblogs.com/funnyzpc/p/15975882.html 前面 似乎上一次更新在遥远的九月份,按照既定的 ...

  4. gdb调试快速入门

    编译指令 gcc test.c -o test -g -g是加入调试信息,加入源码信息 启动gdb调试 gdb test 进入gdb中 设置参数 set args 10 20 显示参数show age ...

  5. Tableau绘制漏斗图、甘特图、瀑布图、镶边面积图、阴影坡度图

    Tableau绘制漏斗图.甘特图.瀑布图.镶边面积图.阴影坡度图 本文首发于博客冰山一树Sankey,去博客浏览效果更好.直接右上角搜索该标题即可 一. 漏斗图 数据源 1.1 分色直条漏斗图 (1) ...

  6. php 数组汇总

    PHP 5 Array 函数 函数 描述 array() 创建数组. array_change_key_case() 返回其键均为大写或小写的数组. array_chunk() 把一个数组分割为新的数 ...

  7. gitee 的使用

    Git安装教程(windows)   Git是当今最流行的版本控制软件,它包含了许多高级工具,这里小编就讲一下Git的安装. 下载地址:https://git-scm.com/downloads 首先 ...

  8. 快速整明白Redis中的整数集合到底是个啥

    整数集合简介 整数集合(intset)是Redis集合数据类型的内部编码之一,当集合数据类型中的元素都是整数并且元素数量较少的时候,Redis就使用整数集合作为内部编码. 整数集合(intset)中可 ...

  9. Spark ML源码分析之三 分类器

            前面跟大家扯了这么多废话,终于到具体的机器学习模型了.大部分机器学习的教程,总要从监督学习开始讲起,而监督学习的众多算法当中,又以分类算法最为基础,原因在于分类问题非常的单纯直接,几乎 ...

  10. [链表]LeetCode 25 K组一个翻转链表

    LeetCode 25 k组一个翻转链表 TITLE 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[2,1,4,3,5] 示例 2: 输入:head = [1,2,3, ...