时间工具类之"获取相差天数"
一.时间工具类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
时间工具类之"获取相差天数"的更多相关文章
- java时间工具类
在项目中,很多地方需要根据时间获取相应的数据,将时间格式化,或者时间比较等相关操作.一个良好的工具类不仅可以减少代码冗余,还能促进业务处理,加快进度. /** * @author: lxw * @Da ...
- Java8 ,LocalDate,LocalDateTime处理日期和时间工具类,
Java8 ,LocalDate,LocalDateTime处理日期和时间工具类 1.获取今天的日期 2.在Java 8 中获取年.月.日信息 3.在Java 8 中处理特定日期 4.在Java 8 ...
- 小记Java时间工具类
小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...
- 超详细的Java时间工具类
package com.td.util; import java.sql.Timestamp; import java.text.ParseException; import java.text.Pa ...
- Apache Commons Lang之日期时间工具类
码农不识Apache,码尽一生也枉然. FastDateFormat FastDateFormat是一个快速且线程安全的时间操作类,它完全可以替代SimpleDateFromat.因为是线程安全的,所 ...
- jdk1.8 时间工具类,可以满足基本操作
时间工具类 public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd"; public static final S ...
- 代码片段:基于 JDK 8 time包的时间工具类 TimeUtil
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “知识的工作者必须成为自己时间的首席执行官.” 前言 这次泥瓦匠带来的是一个好玩的基于 JDK ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- 基于Java8的日期时间工具类DateTimeFormatter
原文:https://blog.csdn.net/qq_36596145/article/details/85331002 import java.time.Instant; import java. ...
随机推荐
- 哈工大 计算机网络 实验三 IPv4 分组收发实验&IPv4 分组转发实验
计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 IPv4 分组收发实验&IPv4 分组转发实验 实验目的: (注:实验报告模板中的各项内容仅供参考,可依照实际实验情况进 ...
- omnet++:官方文档翻译总结(三)
翻译总结自:Turning it Into a Real Network - OMNeT++ Technical Articles 接官方文档翻译总结(二),本节主要是真实网络的搭建 Part 4 - ...
- Python:Python2和3不同print汉字方式
Python3: 可以直接通过print('你好')输出 Python2: 需在开头加#encoding=UTF-8 不过之前输出的时候即使加了开头一行,也是一些混乱的汉字,一看就知道编码错误,后来我 ...
- YUV相关积累
关于yuv 格式-Semi Planar和Planar https://www.cnblogs.com/welen/articles/5454315.html
- C#集合,字典的运用
三个题解释所有 using System;using System.Collections.Generic;using System.Linq;using System.Text;using Syst ...
- js json.stringfy()和json.parse()的用法
1.JSON.parse;作用:将JavaScript对象表示法的JSON字符串转换为对象(字符串转对象)语法:JSON.parse(text [, reviver])text 必选. 一个有效的 J ...
- php将一个字符串转变成键值对数组的效率问题
有这样一种需求,将形式为"TranAbbr=IPER|AcqSsn=000000073601|MercDtTm=20090615144037"的字符串转换成如下格式的数组: Arr ...
- knative入门指南
尽管Knative自2018年以来一直由社区维护,但最近一直有关于该项目的传言,因为谷歌最近将Knative提交给了云原生计算基金会(CNCF),作为一个孵化项目考虑. 太酷了!但Knative到底是 ...
- 线程的sleep()方法和yield()方法有什么区别?
sleep()方法和yield()方法的区别: sleep()方法给其他线程运行机会时,不考虑线程的优先级,因此会给低优先级的线程运行机会:yield()方法只会给相同优先级或更高优先级的线程运行机会 ...
- mtu的原理和作用
MTU: 最大传输单元,是指一种通信协议的某一层上面所能通过的最大数据包大小,最大传输单元这个参数通常与通信接口有关. 因为协议数据单元的包头和包尾的长度是固定的,MTU越大,则一个协议数据单元的承载 ...