Java日期时间API系列18-----Jdk8中java.time包中的新的日期时间API类,java日期计算5,其他常用日期计算,星期计算,闰年计算等
通过Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析中可以看出,java8中的方法特别丰富,一些常用的计算如星期计算,闰年计算等等。
下面是应用代码:
/**
* 获取星期值 1-7,星期一到星期日
* @param date
* @return
*/
public static int getDayOfWeek(Date date){
return DateTimeConverterUtil.toLocalDateTime(date).getDayOfWeek().getValue();
} /**
* 获取星期值 1-7,星期一到星期日
* @param localDateTime
* @return
*/
public static int getDayOfWeek(LocalDateTime localDateTime){
Objects.requireNonNull(localDateTime, "localDateTime");
return localDateTime.getDayOfWeek().getValue();
} /**
* 获取星期值 1-7,星期一到星期日
* @param instant
* @return
*/
public static int getDayOfWeek(Instant instant){
return DateTimeConverterUtil.toLocalDateTime(instant).getDayOfWeek().getValue();
} /**
* 获取星期值当前月的最后一天
* @param localDate
* @return
*/
public static LocalDate lastDayOfMonth(LocalDate localDate){
Objects.requireNonNull(localDate, "localDate");
return localDate.with(TemporalAdjusters.lastDayOfMonth());
} /**
* 获取星期值当前月的最后一天
* @param localDateTime
* @return
*/
public static LocalDateTime lastDayOfMonth(LocalDateTime localDateTime){
Objects.requireNonNull(localDateTime, "localDateTime");
return localDateTime.with(TemporalAdjusters.lastDayOfMonth());
} /**
* 获取星期值当前月的最后一天
* @param date
* @return
*/
public static Date lastDayOfMonth(Date date){
return DateTimeConverterUtil.toDate(DateTimeConverterUtil.toLocalDate(date).with(TemporalAdjusters.lastDayOfMonth()));
} /**
* 判断是否闰年
* @param localDate
* @return
*/
public static boolean isLeapYear(LocalDate localDate){
Objects.requireNonNull(localDate, "localDate");
return localDate.isLeapYear();
} /**
* 判断是否闰年
* @param localDateTime
* @return
*/
public static boolean isLeapYear(LocalDateTime localDateTime){
Objects.requireNonNull(localDateTime, "localDateTime");
return localDateTime.toLocalDate().isLeapYear();
} /**
* 判断是否闰年
* @param date
* @return
*/
public static boolean isLeapYear(Date date){
return DateTimeConverterUtil.toLocalDateTime(date).toLocalDate().isLeapYear();
} /**
* 获取月的天数
* @param localDate
* @return
*/
public static int lengthOfMonth(LocalDate localDate){
Objects.requireNonNull(localDate, "localDate");
return localDate.lengthOfMonth();
} /**
* 获取月的天数
* @param localDateTime
* @return
*/
public static int lengthOfMonth(LocalDateTime localDateTime){
Objects.requireNonNull(localDateTime, "localDateTime");
return localDateTime.toLocalDate().lengthOfMonth();
} /**
* 获取月的天数
* @param date
* @return
*/
public static int lengthOfMonth(Date date){
return DateTimeConverterUtil.toLocalDateTime(date).toLocalDate().lengthOfMonth();
} /**
* 获取年的天数
* @param localDate
* @return
*/
public static int lengthOfYear(LocalDate localDate){
Objects.requireNonNull(localDate, "localDate");
return localDate.lengthOfYear();
} /**
* 获取年的天数
* @param localDateTime
* @return
*/
public static int lengthOfYear(LocalDateTime localDateTime){
Objects.requireNonNull(localDateTime, "localDateTime");
return localDateTime.toLocalDate().lengthOfYear();
} /**
* 获取年的天数
* @param date
* @return
*/
public static int lengthOfYear(Date date){
return DateTimeConverterUtil.toLocalDateTime(date).toLocalDate().lengthOfYear();
} /**
* 下一个星期几
* @param localDate
* @param dayOfWeek
* @return
*/
public static LocalDate next(LocalDate localDate, DayOfWeek dayOfWeek){
Objects.requireNonNull(localDate, "localDate");
return localDate.with(TemporalAdjusters.next(dayOfWeek));
} /**
* 下一个星期几
* @param localDateTime
* @param dayOfWeek
* @return
*/
public static LocalDateTime next(LocalDateTime localDateTime, DayOfWeek dayOfWeek){
return localDateTime.with(TemporalAdjusters.next(dayOfWeek));
} /**
* 下一个星期几
* @param date
* @param dayOfWeek
* @return
*/
public static Date next(Date date, DayOfWeek dayOfWeek){
return DateTimeConverterUtil.toDate(DateTimeConverterUtil.toLocalDate(date).with(TemporalAdjusters.next(dayOfWeek)));
} /**
* 上一个星期几
* @param localDate
* @param dayOfWeek
* @return
*/
public static LocalDate previous(LocalDate localDate, DayOfWeek dayOfWeek){
Objects.requireNonNull(localDate, "localDate");
return localDate.with(TemporalAdjusters.previous(dayOfWeek));
} /**
* 上一个星期几
* @param localDateTime
* @param dayOfWeek
* @return
*/
public static LocalDateTime previous(LocalDateTime localDateTime, DayOfWeek dayOfWeek){
return localDateTime.with(TemporalAdjusters.previous(dayOfWeek));
} /**
* 上一个星期几
* @param date
* @param dayOfWeek
* @return
*/
public static Date previous(Date date, DayOfWeek dayOfWeek){
return DateTimeConverterUtil.toDate(DateTimeConverterUtil.toLocalDate(date).with(TemporalAdjusters.previous(dayOfWeek)));
} /**
* 获下一个工作日
* @param localDate
* @return
*/
public static LocalDate nextWorkDay(LocalDate localDate){
Objects.requireNonNull(localDate, "localDate");
return localDate.with(TemporalAdjusterExtension.nextWorkDay());
} /**
* 获下一个工作日
* @param localDateTime
* @return
*/
public static LocalDateTime nextWorkDay(LocalDateTime localDateTime){
Objects.requireNonNull(localDateTime, "localDateTime");
return localDateTime.with(TemporalAdjusterExtension.nextWorkDay());
} /**
* 获下一个工作日
* @param date
* @return
*/
public static Date nextWorkDay(Date date){
return DateTimeConverterUtil.toDate(DateTimeConverterUtil.toLocalDate(date).with(TemporalAdjusterExtension.nextWorkDay()));
}
测试代码:
/**
* Date其他常用计算
*/
@Test
public void dateCalculatorOtherTest(){
Date date = new Date();
System.out.println(date);
System.out.println(DateTimeConverterUtil.toLocalDateTime(date));
//获取星期值
System.out.println(DateTimeCalculatorUtil.getDayOfWeek(date));
//获取星期值当前月的最后一天
System.out.println(DateTimeCalculatorUtil.lastDayOfMonth(date));
//判断是否闰年
System.out.println(DateTimeCalculatorUtil.isLeapYear(date));
//获取月的天数
System.out.println(DateTimeCalculatorUtil.lengthOfMonth(date));
//获取月的天数
System.out.println(DateTimeCalculatorUtil.lengthOfYear(date));
//下一个星期一
System.out.println(DateTimeCalculatorUtil.next(date, DayOfWeek.MONDAY));
//上一个星期一
System.out.println(DateTimeCalculatorUtil.previous(date, DayOfWeek.MONDAY));
//获下一个工作日
System.out.println(DateTimeCalculatorUtil.nextWorkDay(date));
} /**
* LocalDateTime其他常用计算
*/
@Test
public void dateCalculatorOtherTest2(){
LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt); //获取星期值
System.out.println(DateTimeCalculatorUtil.getDayOfWeek(ldt));
//获取星期值当前月的最后一天
System.out.println(DateTimeCalculatorUtil.lastDayOfMonth(ldt));
//判断是否闰年
System.out.println(DateTimeCalculatorUtil.isLeapYear(ldt));
//获取月的天数
System.out.println(DateTimeCalculatorUtil.lengthOfMonth(ldt));
//获取月的天数
System.out.println(DateTimeCalculatorUtil.lengthOfYear(ldt));
//下一个星期一
System.out.println(DateTimeCalculatorUtil.next(ldt, DayOfWeek.MONDAY));
//上一个星期一
System.out.println(DateTimeCalculatorUtil.previous(ldt, DayOfWeek.MONDAY));
//获下一个工作日
System.out.println(DateTimeCalculatorUtil.nextWorkDay(ldt));
}
测试结果:
Fri Feb 07 18:34:40 CST 2020
2020-02-07T18:34:40.887
5
Sat Feb 29 00:00:00 CST 2020
true
29
366
Mon Feb 10 00:00:00 CST 2020
Mon Feb 03 00:00:00 CST 2020
Mon Feb 10 00:00:00 CST 2020 2020-02-07T18:34:56.421
5
2020-02-29T18:34:56.421
true
29
366
2020-02-10T18:34:56.421
2020-02-03T18:34:56.421
2020-02-10T18:34:56.421
源代码地址:https://github.com/xkzhangsan/xk-time
Java日期时间API系列18-----Jdk8中java.time包中的新的日期时间API类,java日期计算5,其他常用日期计算,星期计算,闰年计算等的更多相关文章
- 在swt中获取jar包中的文件 uri is not hierarchical
uri is not hierarchical 学习了:http://blog.csdn.net/zdsdiablo/article/details/1519719 在swt中获取jar包中的文件: ...
- API接口自动化之3 同一个war包中多个接口做自动化测试
同一个war包中多个接口做自动化测试 一个接口用一个测试类,每个测试用例如下,比如下面是4个测试用例,每个详细的测试用例中含有请求入参,返回体校验,以此来判断每条测试用例是否通过 一个war包中,若含 ...
- Andriod项目开发实战(1)——如何在Eclipse中的一个包下建新包
最开始是想将各个类分门别类地存放在不同的包中,所以想在项目源码包中新建几个不同功能的包eg:utils.model.receiver等,最后的结果应该是下图左边这样的: 很明显建立项目后的架构是上 ...
- 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上找到一个比 ...
- Java中常见的包
目录 JDK自带的包 第三方包 JDK自带的包 JAVA提供了强大的应用程序接口,既JAVA类库.他包含大量已经设计好的工具类,帮助程序员进行字符串处理.绘图.数学计算和网络应用等方面的工作.下面简单 ...
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
Redis总结(五)缓存雪崩和缓存穿透等问题 前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...
- Web API系列(三)统一异常处理
前面讲了webapi的安全验证和参数安全,不清楚的朋友,可以看看前面的文章,<Web API系列(二)接口安全和参数校验>,本文主要介绍Web API异常结果的处理.作为内部或者是对外提供 ...
随机推荐
- Codeforces Round 953 (Div. 2)
Codeforces Round 953 (Div. 2) 闲来无事水题解. A . B . C 显然 \(k\) 是偶数.考虑 \(k\) 的上界,\(p_{1}=n,p_{n}=1\),产生 \( ...
- 2023年最新ios证书申请流程
做过前端多端开发的朋友们都知道,hbuilderx或apicloud这些开发工具的uniapp框架可以开发ios应用,使用他们的云打包即可. 云打包的时候需要一个私钥证书和一个profile文件,这两 ...
- 我出一道面试题,看看你能拿 3k 还是 30k!
大家好,我是程序员鱼皮.欢迎屏幕前的各位来到今天的模拟面试现场,接下来我会出一道经典的后端面试题,你只需要进行 4 个简单的选择,就能判断出来你的水平是新手(3k).初级(10k).中级(15k)还是 ...
- 【Java】用户在线人数统计的简单实现
一.需求效果: 就是进入首页时能查看在线人数,没有特定要求,那我就不刷这个接口了 就进入首页加载一次 二.实现思路: 思路参考博客: https://blog.csdn.net/GitLuckyd/a ...
- 【OracleDB】 08 子查询
什么是子查询? 子查询是一种常用计算机语言SELECT-SQL语言中嵌套查询下层的程序模块. 当一个查询是另一个查询的条件时,称之为子查询. Oracle的子查询语法公式: SELECT select ...
- 【转载】 nvidia-smi - Persistence-M (Persistence Mode)
原文链接: https://blog.csdn.net/chengyq116/article/details/103224622 版权声明:本文为CSDN博主「Yongqiang Cheng」的原创文 ...
- JMH:基准测试工具套件-应用
1.背景 多线程性能测试 JMH:简介 JMH is a Java harness for building, running, and analysing nano/micro/milli/macr ...
- Sentry For Vue 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!
内容源于:https://docs.sentry.io/platforms/javascript/guides/vue/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创 ...
- [学习笔记] MST(最小生成树) - 图论
[学习笔记] MST(最小生成树) - 图论 MST,最小生成树,一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边.--百度百科 对于 ...
- SMU Summer 2023 Contest Round 13
SMU Summer 2023 Contest Round 13 A. Review Site 我们总是可以把差评放到另一个服务器,好评和中立放另一个,这样最多投票数就是好评与中立数 #include ...