java 比较日期差_Java比较两个时间相差多少天,多少个月,多少年

该博客展示了如何使用Java的Calendar类API来比较两个日期之间的差距,包括天数、月数和年数。通过示例代码,演示了如何解析日期字符串并进行计算,输出了不同比较方式的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

展开全部

java比较两个时间相差,可以使32313133353236313431303231363533e4b893e5b19e31333337616637用calender类的api,实例如下:package com.test;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

/**

* @description 日期比较天 月 年

* @author www.javawind.net

*/

public class DateTest {

public static void main(String[] args) {

String date = "2008-06-12";

DateTest.compareDate(date, null, 0);

DateTest.compareDate(date, null, 1);

DateTest.compareDate(date, null, 2);

date = "2006-06-03";

DateTest.compareDate(date, null, 0);

DateTest.compareDate(date, null, 1);

DateTest.compareDate(date, null, 2);

DateTest.compareDate(date, "2009-06-01", 0);

DateTest.compareDate(date, "2009-06-01", 1);

DateTest.compareDate(date, "2009-06-01", 2);

}

/**

* @param date1 需要比较的时间 不能为空(null),需要正确的日期格式

* @param date2 被比较的时间  为空(null)则为当前时间

* @param stype 返回值类型   0为多少天,1为多少个月,2为多少年

* @return

*/

public static int compareDate(String date1,String date2,int stype){

int n = 0;

String[] u = {"天","月","年"};

String formatStyle = stype==1?"yyyy-MM":"yyyy-MM-dd";

date2 = date2==null?DateTest.getCurrentDate():date2;

DateFormat df = new SimpleDateFormat(formatStyle);

Calendar c1 = Calendar.getInstance();

Calendar c2 = Calendar.getInstance();

try {

c1.setTime(df.parse(date1));

c2.setTime(df.parse(date2));

} catch (Exception e3) {

System.out.println("wrong occured");

}

//List list = new ArrayList();

while (!c1.after(c2)) {                     // 循环对比,直到相等,n 就是所要的结果

//list.add(df.format(c1.getTime()));    // 这里可以把间隔的日期存到数组中 打印出来

n++;

if(stype==1){

c1.add(Calendar.MONTH, 1);          // 比较月份,月份+1

}

else{

c1.add(Calendar.DATE, 1);           // 比较天数,日期+1

}

}

n = n-1;

if(stype==2){

n = (int)n/365;

}

System.out.println(date1+" -- "+date2+" 相差多少"+u[stype]+":"+n);

return n;

}

/**

* 得到当前日期

* @return

*/

public static String getCurrentDate() {

Calendar c = Calendar.getInstance();

Date date = c.getTime();

SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");

return simple.format(date);

}

}

运行结果:

2008-06-12 -- 2009-06-09 相差多少天:362

2008-06-12 -- 2009-06-09 相差多少月:12

2008-06-12 -- 2009-06-09 相差多少年:0

2006-06-03 -- 2009-06-09 相差多少天:1102

2006-06-03 -- 2009-06-09 相差多少月:36

2006-06-03 -- 2009-06-09 相差多少年:3

2006-06-03 -- 2009-06-01 相差多少天:1094

2006-06-03 -- 2009-06-01 相差多少月:36

2006-06-03 -- 2009-06-01 相差多少年:2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值