
/ @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)。
参考资料:
现在是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时间差等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)