Java计算两个日期的相差天数以及除去双休日的相差天数
Java计算两个日期的相差天数
- 计算两个日期相差天数
- Java1.8新类LocalDateTime
- 计算相差天数
- 计算两个日期相差天数(除去双休日)
计算两个日期相差天数
Java1.8新类LocalDateTime
这次用到的时间类是LocalDateTime,它与Java其他的时间类不同的是,LocalDateTime是不储存时区数据的。因此,LocalDateTime也无法转化成时间戳格式。
计算相差天数
因为本文的计算天数,不考虑时分秒带来的影响。因此,我们不需要用LocalDateTime精度这么高的时间类,我们只需要用LocalDate即可。
LocalDateTime转成LocalDate的方法也很简单,代码如下:
LocalDateTime startTime = LocalDateTime.now();
LocalDate start = startDate.toLocalDate();
如果大家去百度的话,会发现很多的博客都会告诉大家用Period这个类的between()方法来计算相差的天数。但是这个方法只能用于同一个月内的天数相减。
但是通过查看LocalDate的源码,发现了另外一种计算相差天数的方法。LocalDate中有一个方法叫做toEpochDay(),它是将LocalDate中的时间,转换成距离1970年1月1日的天数,源码如下:
@Overridepublic long toEpochDay() {long y = year;long m = month;long total = 0;total += 365 * y;if (y >= 0) {total += (y + 3) / 4 - (y + 99) / 100 + (y + 399) / 400;} else {total -= y / -4 - y / -100 + y / -400;}total += ((367 * m - 362) / 12);total += day - 1;if (m > 2) {total--;if (isLeapYear() == false) {total--;}}return total - DAYS_0000_TO_1970;}
以后也可以用这个方法去计算其他与日期相关的问题,可以说这个方法也非常的巧妙。
因此,我们只需要将结束日期的LocalDate调用这个函数减去开始日期的值即可:
public long diffFromDate(LocalDateTime startDate, LocalDateTime endDate){LocalDate start = startDate.toLocalDate();LocalDate end = endDate.toLocalDate();long res = end.toEpochDay()-start.toEpochDay();return res;}
计算两个日期相差天数(除去双休日)
首先可以将问题简化一下,可以知道,不论开始、结束日期,只要经过7天,必定就有两天是周末。因此问题可以简化为,一周内的双休日天数+周数*2.
public int checkWeekendDay(int startDate, int endDate, int days){int weekEndCount = 0;if (days<1){if (startDate==6 || startDate==0){weekEndCount+=1;}} else {weekEndCount+=(days/7)*2;weekEndCount+=calculateWeekendDays(startDate,endDate);}return weekEndCount;}public int calculateWeekendDays(int startDate, int endDate){int weekendCount=0;if (startDate==0&&endDate==6) {weekendCount += 2;}else if (startDate<endDate&&endDate==6){weekendCount+=1;}else if (startDate<endDate&&startDate==0){weekendCount+=1;}else if (startDate>endDate){weekendCount+=2;}if (startDate==endDate){if (startDate==6||endDate==0){weekendCount+=1;}}return weekendCount;}
Java计算两个日期的相差天数以及除去双休日的相差天数相关推荐
- JAVA计算两个日期相差多少天
前言 有时候我们在JAVA中会比较两个日期相差多少天,这里有几个实现方法供大家参考,偶尔会用到,也当做自己收藏.btw,同时也要鄙视一下我的好基友从百度搜到的一个答案的作者,写了毒代码,计算个日期而已 ...
- java计算两个日期之间天数
java计算两个日期之间天数 jxts = DateFunction.getNumberOfDays(jxErq, qsjxrq); public static long getNumberOfDay ...
- Java 计算两个日期相减并转换成月份
来自:https://www.shixinwl.com/article/132 Java 计算两个日期相减并转换成月份 在网上找了很多类似方法结果都是垃圾,于是乎记录下来给需要的人 import ja ...
- Java 计算两个日期相差的天数
本文转自http://takeme.iteye.com/blog/1678179,所有权力归原作者所有. Java代码 import java.text.ParseException; impor ...
- java计算两个日期之间相差的天数的四种方法
计算两个日期之间相差的天数的四种方法 第一种:时间戳的方式,计算两个日期的时间戳的差,再除当天的毫秒数即可得到相差的天数. public static void main(String[] args) ...
- java 计算两个日期相差月数_Java简单计算两个日期月数差的方法
本文实例讲述了Java简单计算两个日期月数差的方法.分享给大家供大家参考,具体如下: /** * 获取两个日期相差的月数 * @param d1 较大的日期 * @param d2 较小的日期 * @ ...
- java 计算两个日期之间的差的天数
1. 计算相差天数 /*** 获取两个日期相差的天数** @param startDateStr* @param endDateStr*/public static int getDayBetween ...
- java计算两个日期之间的天数(java计算两个日期之间的天数算法)
两个日期之间的天数要怎么计算? 两个日期之间的天数的计算=日期相减+1.比如:六月一号到六月三号,这之间是3天,分别是:一号.二号.三号,算式:3-1+1=3(天).同理,2001年到2002年是2年 ...
- java 计算 两个日期 相差多少天
2020-11-11 13:34:29 date1="1987-01-01" date2="2010-01-01" import java.text.Parse ...
最新文章
- 技术人员,为什么会苦逼
- 现代软件工程 2012 北航 项目复审模板
- 【重难点】【Java基础 07】变量类型、内部类、处理器指令优化
- java supplier_Java 函数式编程
- 服务器安装mysql文档_Linux 服务器安装MySQL数据库
- 微言Netty:分布式服务框架
- 将Unity项目改为aar模块
- 2019最新某私塾在线高级java软件架构师实战培训教程
- 《OpenGL编程指南》 笔记一 OpenGL概述
- python集合排序_集合排序python
- MATLAB命令总结
- linux导航改端口波特率,各大导航端口速率修改方法
- freemarker word模板导出图片循环
- 从rman 备份中恢复表
- 百度地图海量点位渲染造成卡顿问题解决
- 【老生谈算法】matlab实现高通滤波器源码——高通滤波器
- 精致蓝色科技感5G新时代PPT模板
- 白色简洁网站html模板,白色简洁形式pc+wap个人作品集网页模板代码
- uniapp项目打包为桌面应用的方法步骤
- 有向完全图和强连通图的区别?
热门文章
- CSRF(Cross-Site Request Forgery) 跨站请求伪造
- 【原创】ThinkpadX240更换三键触摸板注意事项
- 2018.10.16 NOIP模拟 长者(主席树+hash)
- JAVA虚拟机程序计数器
- java中的printwriter_Java中的PrintWriter与FileWriter
- %s在c语言中有什么作用,c语言中%s的用法
- 【UWB】MSE 均方误差、RMSE 均方根误差
- 天使投资人李治国:谈创业
- csdn最牛“首发”性能测试系类文章---jmeter性能测试从理论基础到项目搭建【3-1】
- 【知识分享】你不了解的键盘功能键