Java随笔_ 计算两个日期的时间差

因为之前在做练习时会涉及到计算时间差的问题,这里我采用原生JDK的方式重新回顾总结一次。

方法一:

    private static long daysBetween(Date one, Date two) {
        long difference =  (one.getTime()-two.getTime())/86400000;
        return Math.abs(difference);
    }

由于转换成毫秒数计算,如果要获得较为准确的结果,应将日期规整,即将日期的时分秒设置为0:00点整点,避免2日期时间(时分秒)的差异造成计算偏差。

方法二:

import java.text.SimpleDateFormat;
import java.util.Date;
 
public class DateTest {
	private int getTermDays2() throws Exception{
		String sEndDate = "2022-06-01";		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date1 = new Date();
		Date date2 = sdf.parse(sEndDate);
		long days = (date2.getTime() - date1.getTime()) / (24*3600*1000);
		long yushu = (date2.getTime() - date1.getTime()) % (24*3600*1000);
		
		System.out.println("days:" + days + ",yushu:" + yushu);
		
           //规整方法1 
		date1.setHours(0);
		date1.setMinutes(0);
		date1.setSeconds(0);
		long days2 = (date2.getTime() - date1.getTime()) / (24*3600*1000);
		long yushu2 = (date2.getTime() - date1.getTime()) % (24*3600*1000);
		
		System.out.println("days2:" + days2 + ",yushu2:" + yushu2);
		
           //规整方法2 
		String sdate1 = sdf.format(date1);
		date1 = sdf.parse(sdate1);
		
		long days3 = (date2.getTime() - date1.getTime()) / (24*3600*1000);
		long yushu3 = (date2.getTime() - date1.getTime()) % (24*3600*1000);
		
		System.out.println("days3:" + days3 + ",yushu3:" + yushu3);		
		
		return (int)days;
	}
	
	public static void main(String[] args) {
		DateTest dt = new DateTest();
		try {
			dt.getTermDays2();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}

在只计算天数的情况下可以将日期先规整,避免较大误差。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值