java date 获取天数差_Java计算两个时间的天数差与月数差 LocalDateTime

这篇博客介绍了如何在Java中计算两个日期或时间点之间的天数和月数差。提供了`dateDiff`和`monthDiff`两个静态方法,分别用于计算天数和月数差。`dateDiff`通过将日期转换为从1970年1月1日后经过的秒数,再转换为天数来计算;`monthDiff`则通过获取年份和月份直接计算。测试用例展示了这两个方法的正确性。
摘要由CSDN通过智能技术生成

/**

* 计算两个时间点的天数差

* @param dt1 第一个时间点

* @param dt2 第二个时间点

* @return int,即要计算的天数差

*/

public static int dateDiff(LocalDateTime dt1,LocalDateTime dt2){

//获取第一个时间点的时间戳对应的秒数

long t1 = dt1.toEpochSecond(ZoneOffset.ofHours(0));

//获取第一个时间点在是1970年1月1日后的第几天

long day1 = t1 /(60*60*24);

//获取第二个时间点的时间戳对应的秒数

long t2 = dt2.toEpochSecond(ZoneOffset.ofHours(0));

//获取第二个时间点在是1970年1月1日后的第几天

long day2 = t2/(60*60*24);

//返回两个时间点的天数差

return (int)(day2 - day1);

}

@Test

public void testDay(){

LocalDateTime of1 = LocalDateTime.of(2018, 9, 25, 1, 1);//2018-9-25 01:01

LocalDateTime of2 = LocalDateTime.of(2019, 9, 25, 23, 16); //2019-9-25 23:16

System.out.println(dateDiff(of1,of2));//365

}

/**

* 获取两个时间点的月份差

* @param dt1 第一个时间点

* @param dt2 第二个时间点

* @return int,即需求的月数差

*/

public static int monthDiff(LocalDateTime dt1,LocalDateTime dt2){

//获取第一个时间点的月份

int month1 = dt1.getMonthValue();

//获取第一个时间点的年份

int year1 = dt1.getYear();

//获取第一个时间点的月份

int month2 = dt2.getMonthValue();

//获取第一个时间点的年份

int year2 = dt2.getYear();

//返回两个时间点的月数差

return (year2 - year1) *12 + (month2 - month1);

}

@Test

public void testMonth(){

LocalDateTime of1 = LocalDateTime.of(2018, 9, 25, 1, 1);//2018-9-25 01:01

LocalDateTime of2 = LocalDateTime.of(2019, 9, 25, 23, 16); //2019-9-25 23:16

System.out.println(monthDiff(of1,of2));//12

}

js计算两个时间相差天数

//两个时间相差天数 兼容firefox chrome    function datedifference(sDate1, sDate2) {    //sDate1和sDate2是2006-12 ...

java计算两个时间相差(天、小时、分钟、秒)

public static Long dateDiff(String startTime, String endTime, String format, String str) { // 按照传入的格 ...

Java计算两个字符串日期之间的天数差

Java计算两个字符串日期之间的天数差 调用方法: public static void main(String[] args) throws ParseException { String a = ...

C#计算两个时间年份月份天数(根据生日计算年龄)差,求时间间隔

C#计算两个时间年份月份差 DateTime dt1 = Convert.ToDateTime("2008-8-8"); DateTime dt2 = System.DateTim ...

java 判断两个时间相差的天数

1.实现目标 输入:两个日期 输出:两个日期相差的天数 2.代码实现 方法1: 通过Calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的   ...

oracle计算两个时间的差值(XX天XX时XX分XX秒)

在工作中需要计算两个时间的差值,结束时间 - 开始时间,又不想在js里写function,也不想在java里去计算,干脆就在数据库做了一个函数来计算两个时间的差值.格式为XX天XX时XX分XX秒: 上 ...

使用LocalDateTime计算两个时间的差

LocalDateTime now = LocalDateTime.now();System.out.println("计算两个时间的差:");LocalDateTime end ...

Java判断两个时间相差的天数

1.实现目标 输入:两个日期 输出:两个日期相差的天数 2.代码实现 方法1: 通过Calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的   ...

MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数

MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数 计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() ...

随机推荐

自定义Chrome插件Vimium

自定义快捷键 map e scrollPageUp map w removeTab map s nextTab map a previousTab map q goNext map z restore ...

tiny java web server

import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; ...

Altium Desiner 警告 adding hidden net

这是因为 一些元件 隐藏了 vcc GND 或者没有使用vcc GND ,用不着它也报警告了. 这里可以将 vcc GND删掉这个管脚.

viewpager接受值图片轮播

package com.baway.test; import java.util.ArrayList;import java.util.List;import java.util.Timer;impo ...

WEB 安全之 SQL注入 < 二 > 暴库

SQL注入是一个比较"古老"的话题,虽然现在存在这种漏洞的站点比较少了,我们还是有必要了解一下它的危害,及其常用的手段,知己知彼方能百战不殆.进攻与防守相当于矛和盾的关系,我们如果 ...

将js对象转为json对象属性加上引号

工具地址 http://js2json.mengxiangchaoren.com

Nginx 简单的负载均衡配置示例

http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html 在此记录下Nginx服务器nginx.conf的配置文件说明, ...

My.Ioc 代码示例——属性和方法注入

在 My.Ioc 中,我们可以指定让容器在构建好对象实例之后,自动为我们调用对象的公共方法或是为对象的公共属性赋值.在解析对象实例时,容器将根据我们在注册对象时指定的方法调用或属性赋值的先后顺序,调用 ...

poj 1065 Wooden Sticks_贪心

题意:将木棍放在机器里处理,第一根需要一分钟,剩余的如果大于等于前边放入的长度和重量,就不用费时间,否则需要一分钟,计算给出一组数的最少时间. 思路:先按长度排序,相同在比较重量,然后按顺序比较得出结 ...

docker学习笔记:容器的网络设置

创建一个docker容器,docker系统会自动为该容器分配一个ip地址,通常是172.17开头. 我们可以在主机上用 docker inspect 命令 或者进入容器用ifconfig命令来查看容器 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值