Java 如何以月和日为单位获取日期

Java 如何以月和日为单位获取日期,java,date,Java,Date,抱歉,我尝试了引用的方法。但我还是找不到解决办法。如何获取两个不同日期之间的输出月份和天数?任何帮助都将不胜感激。谢谢 p/s:JodaTime不适用 到目前为止我都试过了 SimpleDateFormat formatter= new SimpleDateFormat("dd-MM-yyyy"); String start = "03-01-2015"; String end = "01-11-2014"; Date startdate = formatte

抱歉,我尝试了引用的方法。但我还是找不到解决办法。如何获取两个不同日期之间的输出月份和天数?任何帮助都将不胜感激。谢谢

p/s:JodaTime不适用

到目前为止我都试过了

SimpleDateFormat formatter= new SimpleDateFormat("dd-MM-yyyy");
String start       = "03-01-2015";   
String end         = "01-11-2014";

Date startdate = formatter.parse(start);
Date enddate   = formatter.parse(end);
Calendar startCalendar = new GregorianCalendar();
startCalendar.setTime(startdate);
Calendar endCalendar = new GregorianCalendar();
endCalendar.setTime(enddate);

int diffYear = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR);
int diffMonth = diffYear * 12 + endCalendar.get(Calendar.MONTH) -startCalendar.get(Calendar.MONTH);

在java8中,您可以这样做:

LocalDate startDate = LocalDate.of(2004, Month.JANUARY, 1);
LocalDate endDate = LocalDate.of(2005, Month.JANUARY, 1);

long monthsInYear2 = ChronoUnit.MONTHS.between(startDate, endDate);

(来源:)

希望这就是你想要的

int diffDay= endCalendar.get(Calendar.DAY_OF_MONTH) -startCalendar.get(Calendar.DAY_OF_MONTH);

System.err.println("diffMonth==="+diffMonth +" Month(s) and " + diffDay + " Day(s)");

嗨,维萨姆海迪。。我从代码中发现了一些错误。。如果日期从2016年8月2日到2017年2月2日,sql结果显示:12个月-6天,它应该显示11个月和25天。。如何修复此hm?@user3835327上述日期“2016年2月8日至2017年2月2日”将为您提供6个月的时间,请注意,上述代码中指定的日期格式为“dd-MM-yyyy”格式,而不是“MM-dd-yyyy”