计算两个日期相差的天数,Calendar用法 发表于 2015-03-22 | 分类于 Java | | ❤ 1234567891011121314151617/** * 计算两个日期之间相差的天数 * @param date1 * @param date2 * @return */ public static int daysBetween(Date date1,Date date2) { Calendar cal = Calendar.getInstance(); cal.setTime(date1); long time1 = cal.getTimeInMillis(); cal.setTime(date2); long time2 = cal.getTimeInMillis(); long between_days=(time2-time1)/(1000*3600*24); return Integer.parseInt(String.valueOf(between_days)); } 2.如何知道某个月有多少天?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647public String getDayByMonth(String datetime){ StringBuffer buffer = new StringBuffer(); SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM"); Calendar calendar = new GregorianCalendar(); try { Date date = sdf.parse(datetime); calendar.setTime(date); int day = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); if(day < 10){ buffer = buffer.append("-").append("0").append(String.valueOf(day)); }else{ buffer = buffer.append("-").append(String.valueOf(day)); } } catch (ParseException e) { e.printStackTrace(); } return buffer.toString(); } ``` 3\. Calendar 的add用法: add() 的功能非常强大,add 可以对 Calendar 的字段进行计算。如果需要减去值,那么使用负数值就可以了,如 add(field, -value)。 add() 有两条规则: 当被修改的字段超出它可以的范围时,那么比它大的字段会自动修正。如: ```javaCalendar cal1 = Calendar.getInstance(); cal1.set(2000, 7, 31, 0, 0 , 0); //2000-8-31 cal1.add(Calendar.MONTH, 1); //2000-9-31 => 2000-10-1,对吗? System.out.println(cal1.getTime()); //结果是 2000-9-30 [/java]另一个规则是,如果比它小的字段是不可变的(由 Calendar 的实现类决定),那么该小字段会修正到变化最小的值。 以上面的例子,9-31 就会变成 9-30,因为变化最小。 ```javaCalendar calendar = Calendar.getInstance(); // 从一个 Calendar 对象中获取 Date 对象 Date date = calendar.getTime(); calendar.add(Calendar.DAY_OF_YEAR,2); System.out.println("date="+date); System.out.println(calendar.getTime()); 结果: date=Thu Aug 26 18:00:42 CST 2010 Sat Aug 28 18:00:42 CST 2010 欢迎加入微信公众号 赏 微信打赏 支付宝打赏