java计算两个日期之间相差的天数的四种方法

您所在的位置:网站首页 怎么用excel计算两个日期之间的天数 java计算两个日期之间相差的天数的四种方法

java计算两个日期之间相差的天数的四种方法

2023-09-28 09:52| 来源: 网络整理| 查看: 265

计算两个日期之间相差的天数的四种方法

第一种:时间戳的方式,计算两个日期的时间戳的差,再除当天的毫秒数即可得到相差的天数。

public static void main(String[] args) { DateFormat dft = new SimpleDateFormat("yyyy-MM-dd"); try { Date star = dft.parse("2020-02-03");//开始时间 Date endDay=dft.parse("2025-03-02");//结束时间 Long starTime=star.getTime(); Long endTime=endDay.getTime(); Long num=endTime-starTime;//时间戳相差的毫秒数 System.out.println("相差天数为:"+num/24/60/60/1000);//除以一天的毫秒数 } catch (ParseException e) { e.printStackTrace(); } }

第二种:试用util包的Calendar类,每次增加一天,知道和结束时间相等的时候。

public static void main(String[] args) { DateFormat dft = new SimpleDateFormat("yyyy-MM-dd"); try { Date star = dft.parse("2020-02-03");//开始时间 Date endDay=dft.parse("2025-03-02");//结束时间 Date nextDay=star; int i=0; while(nextDay.before(endDay)){//当明天不在结束时间之前是终止循环 Calendar cld = Calendar.getInstance(); cld.setTime(star); cld.add(Calendar.DATE, 1); star = cld.getTime(); //获得下一天日期字符串 nextDay = star; i++; } System.out.println("相差天数为:"+i); } catch (ParseException e) { e.printStackTrace(); } }

第三种:开始结束时间拆分为年月日,循环计算每年的天数和月日的天数,逻辑相加减。

public static void main(String[] args) { String star="2020-02-03"; String end="2025-03-02"; String[] star1=star.split("-"); String[] end1=end.split("-"); int days=0; if(Integer.parseInt(star1[0]) //计算是否是瑞年 if(i%4==0&&i%100!=0||i%400==0){ days+=366; }else{ days+=365; } } } //得到开始那一年已过去的日期 int starday=days(star1[0],star1[1],star1[2]); //得到结束那一年已过去的日期 int endday=days(end1[0],end1[1],end1[2]); //减去开始那一年已过去的日期,加上结束那一年已过去的日期 days=days-starday+endday; System.out.println("相差的天数:"+days); } public static int days(String year,String month,String day){ int days=0; int nowyear=Integer.parseInt(year); int[] monthday={0,31,28,31,30,31,30,31,31,30,31,30,31}; int[] monthday1={0,31,29,31,30,31,30,31,31,30,31,30,31}; boolean flag=true; if(nowyear%4==0&&nowyear%100!=0||nowyear%400==0){ }else{ flag=false; } for(int i=0;i days+=monthday1[i]; }else{ days+=monthday[i]; } } days+=Integer.parseInt(day); return days; }

第四种:以类的方式,计算给定日期到0001-01-01的总天数,再以两个日期的天数作差得到相差天数。

int y; int m; int d; public test2(int y,int m,int d ){ this.y=y; this.m=m; this.d=d; } public int sum(test2 d){ int day=0; int[] x={0,31,28,31,30,31,30,31,31,30,31,30,31}; for(int i=1;i day+=366; }else{ day+=365; } } if(d.y%4==0&& d.y%100!=0 || d.y%400==0){ x[2]=29; } for(int i=1;i//计算两个日期之间的相距天数的成员方法 int s1=sum(this); int s2=sum(d); if(s1>s2){ return s1-s2; }else{ return s2-s1; } } public static void main(String args[]){ int a,b,c; test2 d1,d2; try{ d1=new test2(2020,02,03); d2=new test2(2025,03,02); System.out.println("相差的天数:"+d1.DiffDays(d2)); }catch(Exception e){ System.out.println("error"); } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3