Java比较两个时间相差多少天,多少个月,多少年

Java比较两个时间相差多少天,多少个月,多少年,第1张

/ @param date1 需要比较的时间 不能为空(null),需要正确的日期格式 ,如:2009-09-12 @param date2 被比较的时间 为空(null)则为当前时间 @param stype 返回值类型 0为多少天,1为多少个月,2为多少年 @return 举例: compareDate("2009-09-12", null, 0);//比较天 compareDate("2009-09-12", null, 1);//比较月 compareDate("2009-09-12", null, 2);//比较年 / public static int compareDate(String startDay,String endDay,int stype){ int n = 0; String[] u = {"天","月","年"}; String formatStyle = stype==1"yyyy-MM":"yyyy-MM-dd"; endDay = endDay==nullgetCurrentDate("yyyy-MM-dd"):endDay; DateFormat df = new SimpleDateFormat(formatStyle); Calendar c1 = CalendargetInstance(); Calendar c2 = CalendargetInstance(); try { c1setTime(dfparse(startDay)); c2setTime(dfparse(endDay)); } catch (Exception e3) { Systemoutprintln("wrong occured"); } //List list = new ArrayList(); while (!c1after(c2)) { // 循环对比,直到相等,n 就是所要的结果 //listadd(dfformat(c1getTime())); // 这里可以把间隔的日期存到数组中 打印出来 n++; if(stype==1){ c1add(CalendarMONTH, 1); // 比较月份,月份+1 } else{ c1add(CalendarDATE, 1); // 比较天数,日期+1 } } n = n-1; if(stype==2){ n = (int)n/365; } Systemoutprintln(startDay+" -- "+endDay+" 相差多少"+u[stype]+":"+n); return n; } public static String getCurrentDate(String format){ Calendar day=CalendargetInstance(); dayadd(CalendarDATE,0); SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd" String date = sdfformat(daygetTime()); return date; }

思路就是根据它们相差的毫秒数除以每天的毫秒数(6060241000),代码如下:

public static void main(String[] args) throws ParseException {

String date1="1987-01-01";

String date2="2010-01-01";

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");

Date d1=sdfparse(date1);

Date d2=sdfparse(date2);

long daysBetween=(d2getTime()-d1getTime()+1000000)/(6060241000);

Systemoutprintln("1987-01-01 与 2010-01-01 相隔 "+daysBetween+" 天");

}

运行结果如下:

扩展资料:

Java使用以下三种方法来比较两个日期:

1、使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。

2、使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12)before(new Date (99, 2, 18)) 返回true。

3、使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。

SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行

例如:

SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。

注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。

以上实例编译运行结果如下:

当前时间为: 2018-09-14 10:16:34

参考资料:

Java官方API接口-Date

菜鸟教程-Java 日期时间

你要好好看api文档,Calendar类是进行日期计算的,里面还需要用到DateFormat类进行格式类型转化赋给Date,然后赋给Calendar进行计算,因为java提供了一个从

1970年1月1日 00:00:00 开始 以毫秒为单位,几乎往后你能想到的任何年份日历已经编排好了,你只需要赋值,然后调用Calendar类方法就能进行任意两个时间之差,不论是年差,月差,日差,时差

具体的方法你去看16API中文吧

java中计算两个时间相差多少分钟

具体代码如下:

public static String getDatePoor(Date endDate, Date nowDate) {

long nd = 1000 24 60 60;

long nh = 1000 60 60;

long nm = 1000 60;

// long ns = 1000;

// 获得两个时间的毫秒时间差异

long diff = endDategetTime() - nowDategetTime();

// 计算差多少天

long day = diff / nd;

// 计算差多少小时

long hour = diff % nd / nh;

// 计算差多少分钟

long min = diff % nd % nh / nm;

// 计算差多少秒//输出结果

// long sec = diff % nd % nh % nm / ns;

return day + "天" + hour + "小时" + min + "分钟";

}

data默认有toString()

输出格林威治时间,比如说Date date = new Date();

String toStr = datetoString();

扩展资料:

Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。

用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动感的Web、Internet计算。

从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。

Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。

参考资料:

JAVA计算-百度百科

现在是2004-03-26 13:31:40

过去是:2004-01-02 11:30:24

要获得两个日期差,差的形式为:XX天XX小时XX分XX秒

方法一:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

try

{

Date d1 = dfparse("2004-03-26 13:31:40");

Date d2 = dfparse("2004-01-02 11:30:24");

long diff = d1getTime() - d2getTime();

long days = diff / (1000 60 60 24);

}

catch (Exception e)

{

}

方法二:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

javautilDate now = dfparse("2004-03-26 13:31:40");

javautilDate date=dfparse("2004-01-02 11:30:24");

long l=nowgetTime()-dategetTime();

long day=l/(2460601000);

long hour=(l/(60601000)-day24);

long min=((l/(601000))-day2460-hour60);

long s=(l/1000-day246060-hour6060-min60);

Systemoutprintln(""+day+"天"+hour+"小时"+min+"分"+s+"秒");

方法三:

SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

javautilDate begin=dfsparse("2004-01-02 11:30:24");

javautilDate end = dfsparse("2004-03-26 13:31:40");

long between=(endgetTime()-begingetTime())/1000;//除以1000是为了转换成秒

long day1=between/(243600);

long hour1=between%(243600)/3600;

long minute1=between%3600/60;

long second1=between%60/60;

Systemoutprintln(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒");

====================================================

java 比较时间大小

String s1="2008-01-25 09:12:09";

String s2="2008-01-29 09:12:11";

javatextDateFormat df=new javatextSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

javautilCalendar c1=javautilCalendargetInstance();

javautilCalendar c2=javautilCalendargetInstance();

try

{

c1setTime(dfparse(s1));

c2setTime(dfparse(s2));

}catch(javatextParseException e){

Systemerrprintln("格式不正确");

}

int result=c1compareTo(c2);

if(result==0)

Systemoutprintln("c1相等c2");

else if(result<0)

Systemoutprintln("c1小于c2");

else

Systemoutprintln("c1大于c2");

以上就是关于Java比较两个时间相差多少天,多少个月,多少年全部的内容,包括:Java比较两个时间相差多少天,多少个月,多少年、java中如何计算出两个日期之间相差多少天、Java中Date时间差等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9641573.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存