java计算日期相差天数的4种方法

方法1:long值相减(推荐)

public static void main(String[] args) {DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {Date startDate = dateFormat.parse("2024-03-01 10:00:00");//开始时间Date endDate = dateFormat.parse("2024-03-02 14:00:00");//结束时间long msNum = endDate.getTime()-startDate.getTime();//时间戳相差的毫秒数long dayNum = msNum/(24*60*60*1000)//除以一天的毫秒数,得到相差天数System.out.println("相差天数为:"+ dayNum);} catch (ParseException e) {e.printStackTrace();}
}

方法2:

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();}}

方法3:

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])<Integer.parseInt(end1[0])){for(int i=Integer.parseInt(star1[0]);i<Integer.parseInt(end1[0]);i++){//计算是否是瑞年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<Integer.parseInt(month);i++){if(flag){days+=monthday1[i];}else{days+=monthday[i];}}days+=Integer.parseInt(day);return days;}

方法4:

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<d.y;i++){if(i%4==0&& i%100!=0 || i%400==0){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<d.m;i++){day+=x[i];	}day+=d.d;System.out.println(day);return day;}public int DiffDays(test2 d){//计算两个日期之间的相距天数的成员方法 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"); } }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础算法(二)#蓝桥杯

文章目录 8、双指针8.1、挑选子串8.2、聪明的小羊肖恩8.3、神奇的数组 9、二分9.1、跳石头9.2、可凑成的最大花朵数9.3、最大通过数9.4、妮妮的月饼广场9.5、基德的神秘冒险9.6、体育健将 10、倍增10.1、快速幂10.2、最近公共祖先LCA查询10.3、理想之城10.4、数的变换 8、双指针…

【十二】【SQL】表的约束

NOT NULL非空约束 展示对NULL的查询 mysql> select NULL; ------ | NULL | ------ | NULL | ------ 1 row in set (0.00 sec)mysql> select 1NULL; -------- | 1NULL | -------- | NULL | -------- 1 row in set (0.00 sec)mysql> 第一条查询&#xff1a;select NU…

JasperStudio中TextField文本框组件渲染之后,出现行间距不一致的问题

目录 1.1、问题描述 1.2、解决方案 1.1、问题描述 最近在处理线上遇到的一个问题,是有关JasperReports报表相关的问题,问题背景大概是这样的:我们的项目中使用了JasperReports来渲染报表,其中使用到了Text Field文本框组件,但是问题是渲染出来的数据直接会出现一些间距…

Python脚本删除文本文件中的重复行

实例&#xff1a;需要用Python删除文本文件a.txt中的重复行. Case1:仅需要删除文件中的重复行&#xff1a; rFile open(a.txt, r) wFile open(b.txt, w) allLine rFile.readlines() rFile.close() s set() for i in allLine:s.add(i) for i in s:wFile.write(i) open(b.t…

洛谷:P3068 [USACO13JAN] Party Invitations S(枚举、前缀和)

这题我们数据范围太大&#xff0c;用二维肯定是不行的&#xff0c;我们可以采用一维线性存储。 如题意&#xff0c;我们可以将每组奶牛编号都存在一维数组里面&#xff0c;只需记录每组的头尾指针就可以了。 如题中样例我们就可以存储成1 3 3 4 1 2 3 4 5 6 7 4 3 2 1 然后第…

[LeetBook]【学习日记】寻找和为指定数字的连续数字

题目 文件组合 待传输文件被切分成多个部分&#xff0c;按照原排列顺序&#xff0c;每部分文件编号均为一个 正整数&#xff08;至少含有两个文件&#xff09;。传输要求为&#xff1a;连续文件编号总和为接收方指定数字 target 的所有文件。请返回所有符合该要求的文件传输组…

【kubernetes】关于k8s集群的存储卷

目录 一、存储卷的分类 二、empty存储卷以及特点 三、hostpath存储卷以及特点 四、nfs存储卷以及特点 五、pvc存储卷 查看pv的定义 查看pvc的定义 实操&#xff1a;静态创建pv的方式 实现pvc存储卷 步骤一&#xff1a;先完成nfs的目录共享&#xff0c;需要准备不同的目…

C# 中 TryParse 将字符串转换为特定类型的方法

在 C# 中&#xff0c;TryParse 是一个用于将字符串转换为特定类型的方法。它用于尝试解析字符串并将其转换为指定类型的值&#xff0c;而不会引发异常。如果解析成功&#xff0c;它将返回 true 并将解析结果存储在输出参数中&#xff1b;如果解析失败&#xff0c;它将返回 fals…

redis10 应用问题(穿透、击穿、雪崩、分布式锁)

思维草图 缓存穿透 查询不存在的数据&#xff0c;穿透redis缓存&#xff0c;请求直接攻击后端db。 问题 当系统中引入redis缓存后&#xff0c;一个请求进来后&#xff0c;会先从redis缓存中查询&#xff0c;缓存有就直接返回&#xff08;相当于一道隔离闸&#xff0c;保护db…

vue设计原理-带你重走vue诞生路程

我们首先看下面这个小demo demo源码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" conten…

JAVA如何利用接口实现多继承问题

hello&#xff0c;上文带大家学习了java中类的继承&#xff0c;我们可以创建一个父类&#xff0c;将类中的共性抽取出来&#xff0c;通过子类继承的方式来实现代码的复用。今天带大家学习不同类之间的另外几种关系&#xff0c;即多态抽象类和接口。 多态的概念 多态&#xff0c…

Vue 3的Composition API和vue2的不同之处

Vue 3的Composition API是Vue.js框架的一个重要更新&#xff0c;它提供了一种新的组件逻辑组织和复用方式。在Vue 2中&#xff0c;我们通常使用Options API&#xff08;data、methods、computed等&#xff09;来组织组件的逻辑&#xff0c;但这种组织方式在处理复杂组件时可能会…

实体店好做还是电商平台好做?哪个发展前景较高?

我是电商珠珠 大部分人面对新的一年都会比较迷茫&#xff0c;想要创业会自己增加收入&#xff0c;却在开店和线上做电商这两者之间犹豫不决。不知道哪个更加合适自己&#xff0c;换句话来说&#xff0c;就是不知道哪个赔付率低一点。 现在这个行情&#xff0c;按照网友的说法…

嵌入式学习记录——信号量

信号量的基本内容: 信号量是一种资源,可以被初始化、申请、释放、销毁 P操作:申请资源 V操作:释放资源 1.无名信号量&#xff1a; 1.sem_init int sem_init(sem_t *sem, int pshared, unsigned int value); 功能: 初始化信号量 参数: sem:信号量空间首地…

C++ string类详解及模拟实现

目录 【本节目标】 1. 为什么学习string类&#xff1f; 1.1 C语言中的字符串 1.2 面试题(暂不做讲解) 2. 标准库中的string类 2.1 string类(了解) 2.2 string类的常用接口说明&#xff08;注意下面我只讲解最常用的接口&#xff09; 3. string类的模拟实现 3.1string类常用…

SpringCloud知多少

引言&#xff1a; Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序&#xff0c;提供与外部系统的集 成。Spring cloud Task&#xff0c;一个生命周期短暂的微服务框架&#xff0c;用于快速构建执行有限数据处理的应用 程序。 如何定义微服务&#x…

Express学习(一)

Express Express简介 什么是Express 官方给出的概念&#xff1a;Express是基于Node.js平台&#xff0c;快速、开放、极简的web开发框架。 通俗的理解&#xff1a;Express的作用和Node.js内置的http模块类似&#xff0c;是专门用来创建Web服务器的。进一步理解Express 不使用E…

【软件使用】Markdown编辑器第一次使用介绍

【软件使用】Markdown编辑器第一次使用介绍 markdown格式支持的软件有&#xff1a;VS Code 和 Typora&#xff0c;CSDN写网页博文也是用的.md&#xff0c;CSDN能支持导入的文件也是以.md格式结尾的文件名。 欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markd…

C语言——结构体(位段)、联合体、枚举

hello&#xff0c;大家好&#xff01;我是柚子&#xff0c;今天给大家分享的内容是C语言中的自定义类型结构体、联合体以及枚举&#xff0c;有什么疑问或建议可以在评论区留言&#xff0c;会顺评论区回访哦~ 一、结构体 struct a.结构体声明 不同于数组的是&#xff0c;结构…

【CSP试题回顾】202212-2-训练计划

CSP-202212-2-训练计划 解题思路 输入和初始化&#xff1a; 首先&#xff0c;代码从输入中获取项目的截止日期和项目数量。然后&#xff0c;它初始化一个项目列表&#xff0c;每个项目都有其依赖项、被依赖的项目集合、完成时间、总完成时间&#xff08;包括依赖链&#xff09…