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异常结果的处理.作为内部或者是对外提供 ...
随机推荐
- 探索Amazon S3:存储解决方案的基石(Amazon S3使用记录)
探索Amazon S3:存储解决方案的基石 本文为上一篇minio使用的衍生版 相关链接:1.https://www.cnblogs.com/ComfortableM/p/18286363 2.h ...
- Python和RPA网页自动化-让select标签下拉框选择指定文本的方法
以影刀商城(https://shop.yingdao.com/webOperations/index)为例: 该下拉框有<select>标签.分别使用Python和RPA网页自动化让下拉框 ...
- 06 定时器和PWM(1)
前言 前面介绍了一下外部中断,这一节主要介绍一下内部定时器和PWM,这两个知识还是比较重要的. 一.定时器 1.什么是定时器 定时器其实和计数器一样,我们通过设置一个值,当计数器运行一个计数寄存器向上 ...
- 如何在mysql中删除重复数据
#分组去重法 讲重复的列进行分组 之后用min(id) #取其中最小的保留,其余的删除 -- 步骤 1: 创建临时表,保存每组最小的ID CREATE TEMPORARY TABLE tmp_keep ...
- 【Android】构建Android12项目报错
报错信息: Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Man ...
- Leetcode: 1484. Groups Sold Products By The Date
题目要求如下: 输入的数据为 要求按照日期查询出每日销售数量及相应产品的名称,并按照字符顺序进行排序. 下面是实现的代码: import pandas as pd def categorize_pro ...
- 零基础学虚幻4(UE4):蓝图+VR 丁树凯教程
本人正在学习中,需要资料或者讨论问题的加Q:1241642375
- AtCoder Beginner Contest 328
AtCoder Beginner Contest 328 A - Not Too Hard (atcoder.jp) #include <bits/stdc++.h> #define de ...
- Maven经验分享(三)编译引入本地jar
如果编译时需要引入本地jar,则可以增加如下配置: <plugin> <artifactId>maven-compiler-plugin</artifactId> ...
- 减小code体积的书写习惯
1. 减少使用switch 2. 函数内部尽量使用内部变量,减少使用全局变量的次数 void func(void){ uint32_t sysclk; ... // 其他代码 rccClocks.SY ...