有时候,往往需要统计某个时间区间的销量等问题,这就需要准确的起始时间,获取准确开始时间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等的更多相关文章

  1. Java获取指定时间段的年份(开始、结束时间)、月份(开始、结束时间)、天数(开始、结束时间)

    package test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleD ...

  2. API接口自动化之3 同一个war包中多个接口做自动化测试

    同一个war包中多个接口做自动化测试 一个接口用一个测试类,每个测试用例如下,比如下面是4个测试用例,每个详细的测试用例中含有请求入参,返回体校验,以此来判断每条测试用例是否通过 一个war包中,若含 ...

  3. Andriod项目开发实战(1)——如何在Eclipse中的一个包下建新包

    最开始是想将各个类分门别类地存放在不同的包中,所以想在项目源码包中新建几个不同功能的包eg:utils.model.receiver等,最后的结果应该是下图左边这样的:   很明显建立项目后的架构是上 ...

  4. php 根据给定的年份和月份获取该年份该月份的起始和结束时间

    function getShiJianChuo($nian=0,$yue=0){ if(empty($nian) || empty($yue)){ $now = time(); $nian = dat ...

  5. Mac 如何导出ipa文件中Assets.car包中的切图

    在之前 获取 AppStore 中 应用 的 IPA 包文件(Mac OS 13+)中获取到应用的 IPA 包,可以取出应用的部分图片(如 Logo),如果项目工程中把图片添加到 Assets.xca ...

  6. JDK中的Atomic包中的类及使用

    引言 Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作.原子变量的底层使用了处理器提供的原子指令,但是不同的CPU ...

  7. 【转】Eclipse中查看jar包中的源码

    (简单的方式:通过jd-gui来进行反编译,最简单!,参考我的另一篇博文, 地址:http://www.cnblogs.com/gmq-sh/p/4277991.html) Java Decompil ...

  8. Package.json中dependencies依赖包中^符号和~符号前缀的区别

    刚git了webpack的包发现package.json里面dependencies依赖包的版本号前面的符号有两种,一种是~,一种是^,如下图标记: 然后搜了下在stackoverflow上找到一个比 ...

  9. Java8系列 (六) 新的日期和时间API

    概述 在Java8之前, 我们一般都是使用 SimpleDateFormat 来解析和格式化日期时间, 但它是线程不安全的. @Test public void test() { SimpleDate ...

  10. Java8 新的日期和时间API(笔记)

    LocalDate LocalTime Instant duration以及Period 使用LocalDate和LocalTime //2017-03-20 LocalDate date = Loc ...

随机推荐

  1. docker dockerfile基础指令

    dockerfile是用来构建docker镜像文件!命令参数脚本 构建步骤 1.编写一个dockerfile文件 2.dockerbuild构建成为一个镜像 3.docker run运行镜像 4.do ...

  2. 多智能体路径规划问题 —— Learn all about Multi-Agent Path Finding (MAPF)

    地址: http://mapf.info/index.php/Main/Publications 与其对应的实验室地址: https://www.movingai.com/

  3. 【转载】 tf.image.sample_distorted_bounding_box (为图像生成单个随机变形的边界框)

    原文地址: https://blog.csdn.net/tz_zs/article/details/77920116 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上 ...

  4. 制约国产深度学习框架发展的根本原因 —— AI芯片的无法自主生产或量产

    秉着没事就胡言乱语的宗旨,这里在接着胡说八道一下. 国外的深度学习框架如TensorFlow.pytorch.Jax打的如火如荼,按照以往惯例我们是不应该去做自主研发软件系统的,毕竟硬件不在掌握之下, ...

  5. python网络连接报错:ValueError("Unable to determine SOCKS version from %s" % proxy_url) ValueError: Unable to determine SOCKS version from socks://192.168.1.100:1080/

    python应用proxy网络连接报错: return super().send(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...

  6. AI大模型 —— 国产大模型 —— 华为大模型

    有这么一句话,那就是AI大模型分两种,一种是大模型:另一种是华为大模型. 如果从技术角度来分析,华为的技术不论是在软件还是硬件都比国外的大公司差距极大,甚至有些技术评论者认为华为的软硬件技术至少落后2 ...

  7. 纯css美化滚动条样式

    https://www.emperinter.info/2020/09/20/scrollbar-in-browser/ 自己完善自己博客再Ipad等移动端的菜单时选用了左右滑动的菜单模式!当然就会使 ...

  8. 圆方树学习笔记 & 最短路 题解

    前言 圆方树学习笔记,从一道例题讲起. 题目链接:Hydro & bzoj. 题意简述 仙人掌上求两点距离. 题目分析 为了把仙人掌的性质发挥出来,考虑将其变成一棵树.圆方树就是这样转换的工具 ...

  9. bat2exe

    https://blog.csdn.net/qq_23452385/article/details/109145151

  10. CF Pinely Round 4

    https://codeforces.com/contest/1991 \(-122=2019\) D \(1,3,4,6\) 构成团,所以答案下界为 \(4\) 按模 \(4\) 染色.同色的二进制 ...