Java计算两个时间的天数差与月数差 LocalDateTime

/**
  * 计算两个时间点的天数差
  * @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
 }

原文地址:https://www.cnblogs.com/jinggai/p/11588344.html

时间: 2024-11-25 11:42:49

Java计算两个时间的天数差与月数差 LocalDateTime的相关文章

js计算两个时间相差天数

//new Date(aDate[1], aDate[2], aDate[0]) 兼容性比new Date(aDate[1]+"-"+ aDate[2]+"-"+aDate[0])强 //两个时间相差天数 function datedifference(sDate1, sDate2) { //sDate1和sDate2是2006-12-18格式 var aDate, oDate1, oDate2, iDays aDate = sDate1.split("-

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

public static Long dateDiff(String startTime, String endTime, String format, String str) { // 按照传入的格式生成一个simpledateformate对象 SimpleDateFormat sd = new SimpleDateFormat(format); long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数 long nh = 1000 * 60 * 60;// 一小时的毫

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

package com.datedaycha;     import java.text.SimpleDateFormat;     import java.util.Calendar;     import java.util.Date;     import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;     /*      * java 判断两个时间相差的天数     1.实现目标     输入:两

C/C++中计算两个时间相差的天数

在系统中经常用到time()函数获取系统时间,也就是通常所说的日历时间,这个时间是从1970年1月1日0时开始到现在的秒数. 问:已有日历时间t1和t2(假设t1>t2),如何计算他们之间相差的天数. 答: day = (t1+time_zone*60*60)/time_of_day - (t2+time_zone*60*60)/time_of_day 其中time_zone表示时区间隔,比如说北京时间相比于标准时间就需要加8小时,可以参考下图.time_of_day为一天的秒数,等于24*60

js 计算两个时间的差

比如得到两个时间的字符串 2013-01-21 11:10:49   2013-01-21 11:14:43,要用后面的时间减去前面的时间 直接上代码 var begen = new Date(value[0]["createtime"]) var end = new Date(value[i]["createtime"]) var cha = end.getTime()-begen.getTime(); console.log(cha); console.log(

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

在工作中需要计算两个时间的差值,结束时间 - 开始时间,又不想在js里写function,也不想在java里去计算,干脆就在数据库做了一个函数来计算两个时间的差值.格式为XX天XX时XX分XX秒: 上代码: CREATE OR REPLACE FUNCTION F_GET_DIFF_TIME(START_TIME IN DATE, END_TIME IN DATE) RETURN VARCHAR2 IS DIFF_TIME VARCHAR2(50); BEGIN SELECT TDAY || '

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

MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数 计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() 实现. 函数 TimeStampDiff() 是MySQL本身提供的可以计算两个时间间隔的函数,语法为: TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之

js计算两个时间相差的天数

day1='2014-03-31 00:00:01'; function get_day(day1,day2){ var s = day1; var dt = Date.parse(s.replace(/-/g,"/")); var day1 = new Date(dt); var s = day2; var dt = Date.parse(s.replace(/-/g,"/")); var day2 = new Date(dt); var date3=day1.g

php 计算两个时间的差

<?php $now = time(); $old = strtotime("2014-6-25 10:10:10"); $day = floor(($now-$old)/(60*60*24)); $hour = floor(($now-$old)/(60*24)); $minute = floor(($now-$old)/(60)); $second = $now-$old; echo $minute; ?> 要计算两个时间的差需要把两个时间都转换(strtotime)为