Java日期时间API系列23-----Jdk8中java.time包中的新的日期时间API类,获取准确开始时间00:00:00,获取准确结束时间23:59:59等
有时候,往往需要统计某个时间区间的销量等问题,这就需要准确的起始时间,获取准确开始时间00:00:00,获取准确结束时间23:59:59。下面增加了一一些方法,获取当天起始时间,昨天起始时间,当前月第一天开始时间,当前月最后一天结束时间,上个月第一天开始时间,上个月最后一天结束时间,某个指定月的起始结束时间等等。其中月份最后一天往往因为月份不同和闰年而不同。
1 下面是方法:
/**
* 一天开始时间 00:00:00
* @return
*/
public static LocalTime startTimeOfDay(){
return LocalTime.of(0, 0, 0);
} /**
* 一天开始时间 23:59:59
* @return
*/
public static LocalTime endTimeOfDay(){
return LocalTime.of(23, 59, 59);
} /**
* 昨天起始时间 即:昨天日期+00:00:00
* @return
*/
public static Date startTimeOfYesterday(){
return DateTimeConverterUtil.toDate(LocalDate.now().minusDays(1).atTime(startTimeOfDay()));
} /**
* 昨天结束时间即:昨天日期+23:59:59
* @return
*/
public static Date endTimeOfYesterday(){
return DateTimeConverterUtil.toDate(LocalDate.now().minusDays(1).atTime(endTimeOfDay()));
} /**
* 今天起始时间 即:今天日期+00:00:00
* @return
*/
public static Date startTimeOfToday(){
return DateTimeConverterUtil.toDate(LocalDate.now().atTime(startTimeOfDay()));
} /**
* 今天结束时间即:今天日期+23:59:59
* @return
*/
public static Date endTimeOfToday(){
return DateTimeConverterUtil.toDate(LocalDate.now().atTime(endTimeOfDay()));
} /**
* 上个月第一天起始时间 即:上个月第一天日期+00:00:00
* @return
*/
public static Date startTimeOfLastMonth(){
return DateTimeConverterUtil.toDate(firstDayOfMonth(LocalDate.now().minusMonths(1)).atTime(startTimeOfDay()));
} /**
* 上个月最后一天结束时间 即:上个月最后一天日期+23:59:59
* @return
*/
public static Date endTimeOfLastMonth(){
return DateTimeConverterUtil.toDate(lastDayOfMonth(LocalDate.now().minusMonths(1)).atTime(endTimeOfDay()));
} /**
* 当月第一天起始时间 即:当月第一天日期+00:00:00
* @return
*/
public static Date startTimeOfMonth(){
return DateTimeConverterUtil.toDate(firstDayOfMonth(LocalDate.now()).atTime(startTimeOfDay()));
} /**
* 当月最后一天结束时间即:当月最后一天日期+23:59:59
* @return
*/
public static Date endTimeOfMonth(){
return DateTimeConverterUtil.toDate(lastDayOfMonth(LocalDate.now()).atTime(endTimeOfDay()));
} /**
* 获date起始时间
* @param date
* @return
*/
public static Date startTimeOfDate(Date date){
return DateTimeConverterUtil.toDate(DateTimeConverterUtil.toLocalDate(date).atTime(startTimeOfDay()));
} /**
* 获取date结束时间
* @param date
* @return
*/
public static Date endTimeOfDate(Date date){
return DateTimeConverterUtil.toDate(DateTimeConverterUtil.toLocalDate(date).atTime(endTimeOfDay()));
} /**
* 获取指定年月的第一天起始时间
* @param year
* @param month
* @return
*/
public static Date startTimeOfSpecialMonth(int year, int month){
return DateTimeConverterUtil.toDate(LocalDate.of(year, month, 1).atTime(startTimeOfDay()));
} /**
* 获取指定年月的最后一天结束时间
* @param year
* @param month
* @return
*/
public static Date endTimeOfSpecialMonth(int year, int month){
return DateTimeConverterUtil.toDate(lastDayOfMonth(LocalDate.of(year, month, 1)).atTime(endTimeOfDay()));
}
2. 测试代码:
/**
* 获取准确的起始时间方法测试
* 比如startTimeOfMonth() 当月起始时间 当月第一天日期+00:00:00
* endTimeOfMonth() 当月最后一天日期+23:59:59
*/
@Test
public void dateStartTimeAndEndTimeTest(){
//当天
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.startTimeOfToday()));
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.endTimeOfToday())); //当月
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.startTimeOfMonth()));
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.endTimeOfMonth())); //指定年月
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.startTimeOfSpecialMonth(2019, 10)));
System.out.println(DateTimeFormatterUtil.formatToDateTimeStr(DateTimeCalculatorUtil.endTimeOfSpecialMonth(2019, 10)));
}
3. 输出:
2020-02-27 00:00:00
2020-02-27 23:59:59
2020-02-01 00:00:00
2020-02-29 23:59:59
2019-10-01 00:00:00
2019-10-31 23:59:59
源代码地址:https://github.com/xkzhangsan/xk-time
Java日期时间API系列23-----Jdk8中java.time包中的新的日期时间API类,获取准确开始时间00:00:00,获取准确结束时间23:59:59等的更多相关文章
- Java获取指定时间段的年份(开始、结束时间)、月份(开始、结束时间)、天数(开始、结束时间)
package test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleD ...
- API接口自动化之3 同一个war包中多个接口做自动化测试
同一个war包中多个接口做自动化测试 一个接口用一个测试类,每个测试用例如下,比如下面是4个测试用例,每个详细的测试用例中含有请求入参,返回体校验,以此来判断每条测试用例是否通过 一个war包中,若含 ...
- Andriod项目开发实战(1)——如何在Eclipse中的一个包下建新包
最开始是想将各个类分门别类地存放在不同的包中,所以想在项目源码包中新建几个不同功能的包eg:utils.model.receiver等,最后的结果应该是下图左边这样的: 很明显建立项目后的架构是上 ...
- php 根据给定的年份和月份获取该年份该月份的起始和结束时间
function getShiJianChuo($nian=0,$yue=0){ if(empty($nian) || empty($yue)){ $now = time(); $nian = dat ...
- Mac 如何导出ipa文件中Assets.car包中的切图
在之前 获取 AppStore 中 应用 的 IPA 包文件(Mac OS 13+)中获取到应用的 IPA 包,可以取出应用的部分图片(如 Logo),如果项目工程中把图片添加到 Assets.xca ...
- JDK中的Atomic包中的类及使用
引言 Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作.原子变量的底层使用了处理器提供的原子指令,但是不同的CPU ...
- 【转】Eclipse中查看jar包中的源码
(简单的方式:通过jd-gui来进行反编译,最简单!,参考我的另一篇博文, 地址:http://www.cnblogs.com/gmq-sh/p/4277991.html) Java Decompil ...
- Package.json中dependencies依赖包中^符号和~符号前缀的区别
刚git了webpack的包发现package.json里面dependencies依赖包的版本号前面的符号有两种,一种是~,一种是^,如下图标记: 然后搜了下在stackoverflow上找到一个比 ...
- Java8系列 (六) 新的日期和时间API
概述 在Java8之前, 我们一般都是使用 SimpleDateFormat 来解析和格式化日期时间, 但它是线程不安全的. @Test public void test() { SimpleDate ...
- Java8 新的日期和时间API(笔记)
LocalDate LocalTime Instant duration以及Period 使用LocalDate和LocalTime //2017-03-20 LocalDate date = Loc ...
随机推荐
- C语言中的断言函数assert
简介 assert 是 C 语言中的一个宏,用于在程序运行时进行条件检查,主要用于调试目的.它在 <assert.h> 头文件中定义,用于验证程序中的假设条件是否成立,如果不成立,程序将打 ...
- stable diffusion 入门教程
sd基础 工作原理&入门 输入提示词后 有文本编码器将提示词编译成特征向量,vae编码器将特征向量传入潜空间内,特征向量在潜空间内不断降噪,最后通过vae解码器将降噪之后的特征向量 解码成一个 ...
- Fiddler的工作原理
Fiddler是位于客户端和服务器端中间的HTTP代理,是目前最常用的http抓包工具之一 . Fiddler抓取客户端和服务器之间的所有HTTP请求后进行分析.断点.过滤等操作. Fiddler可以 ...
- tar命令备份压缩7天生产日志
[root@localhost logs]# cat tar_7day.sh #!/bin/bash #压缩日期[当天的前一天] todayStamp_1=`date -d "-1 day& ...
- 【Uni-App】page.json 配置项一栏笔记
官方文档 https://uniapp.dcloud.io/collocation/pages 一些配置项是全局的,也可以在页面对象中设置 { "pages": [ //pages ...
- pyqt报错、python报错:src/pyaudio/device_api.c:9:10: fatal error: portaudio.h: 没有那个文件或目录
报错信息: -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/devil/anaconda3/envs/91/include -fPIC -O2 ...
- 【转载】 【树莓派】为Ubuntu Mate for ARM 更换中国软件源
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/wr132/article/details ...
- 强化学习中性能的评价指标到底应该如何选择:1.平均得分,2.平均Q值
<Human-level control through deep reinforcement learning> 是深度强化学习的开创性论文,对于强化学习算法的性能评价在文章中给出了两种 ...
- 一款比较好用的 ssh、 ftp 服务的客户端软件 —— NxShell
该软件地址: https://gitee.com/nxshell/nxshell 截图: ======================================================= ...
- springmvc配置文件中配置mybatis-plus日志输出
1.背景 2.配置方式 如果application.properties文件格式: #sql日志logging.level.com.XX.XXX.mapper=debug如果是application. ...