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异常结果的处理.作为内部或者是对外提供 ...
随机推荐
- Jmeter函数助手2-Random
Random函数用于获取随机范围内的正整数或负整数. 一个范围内的最小值:必填,且必须填入整数(正负数都可以) 一个范围内允许的最大值:必填,且必须填入整数(正负数都可以).最大值需大于最小值如[-6 ...
- Jenkins 配置即代码(Configuration as Code)详解
1.概述 在<Centos7下安装配置最新版本Jenkins(2.452.3)>这篇博文中讲解了如何安装Jenkins,虽然在安装Jenkins时安装了一些必备的推荐插件,但在企业环境中使 ...
- 【Docker】11 私有仓库
Docker的私有仓库也是一个镜像形式: docker pull registry 运行容器: run -d --name my-docker-repo -p 5000:5000 registry 访 ...
- 基于MybatisPlus的简单分页查询和条件分页查询
分页查询 分析: 分析文档要求 查看前端传递给后台的参数 分析参数进行编码 后台返回给前端的数据 思路 浏览器 - > Controller层 - > Service层 - > Ma ...
- pytorch之网络参数统计 torchstat & torchsummary
参考 : https://blog.csdn.net/weixin_45292794/article/details/108227437 https://blog.csdn.net/jzwong/ar ...
- 如何在vscode中同时运行多个文件——server/client模式——在launch.json文件中设置多个configurations再compounds
在vscode中我们一般都是同一时间只运行一个代码,但是这种设置并不适合server/client模式,甚至有很多分布式和并行的项目需要同一时间运行多个client,针对这种情况我们可以通过设置vsc ...
- 随时随地与 LLMs 聊天的开源项目「GitHub 热点速览」
众所周知,本地运行 LLMs 需要下载模型(体积大),并且还比较吃硬件配置.近日 GitHub 推出了 GitHub Models 服务,让开发者可以在 GitHub 上免费测试 Llama.Phi ...
- 粉丝提问|c语言:如何定义一个和库函数名一样的函数,并在函数中调用该库函数
问题描述: 某个函数fun_1()是在lib内,没法修改的,在程序中大量的使用了该函数,现在想把原本fun_1失效(现在失效的方法是#define fun_1(..)),用另外一个函数fun_2(), ...
- 【CMake系列】09-cmake install
本节我们来学习,cmake的安装,将我们构建的目标安装到指定位置,为了模拟一般情况,实现了 可执行文件.静态库.动态库的安装,以及一般的 file 安装.代码的安装 本专栏的实践代码全部放在 gith ...
- springjdbc处理nvarchar
当我们使用spring-jdbc来做持久化时(注意不是spring-data-jbc),有时候一些特殊字符存入数据库时会用到nvarchar.nvarchar2这种类型(比如存放化学式,如CO₂等), ...