[英]how to find the total number of months between the two dates including extra days?
我有一个要求,我需要找出两个日期之间的月份数,包括额外的日子。
例:
开始日期:01/01/2014
结束日期:2014年2月21日
LocalDate startDate = new LocalDate(startDate1);
LocalDate endDate = new LocalDate(endDate1);
PeriodType monthDay =PeriodType.yearMonthDay().withYearsRemoved();
Period difference = new Period(startDate, endDate, monthDay);
int months = difference.getMonths();
int days = difference.getDays()
我将得到的输出是:
个月:1天:20
但我的要求是,我希望获得包括额外一天在内的总月数。
喜欢:1.66个月。
如何在Java中获得这个?
为了能够说1.66
个月,您需要定义一个月。 并不总是相同的。 如果您假设一个月为30天,则可以使用以下方法解决此问题:
Date startDate = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2014");
Date endDate = new SimpleDateFormat("dd/MM/yyyy").parse("21/02/2014");
double result = (endDate.getTime() - startDate.getTime()) / (1000D*60*60*24*30);
这给了我们1.7
,如果除以31,则得到1.6451612903225807
。
如果您想要一个更好的(而不是完美的)一个月有多长时间的近似值,可以尝试365/12
,它会给您1.6767123287671233
但这仍然不是完美的,因为leap年有366天。
问题不在于公式,而在于问题的定义。 现实生活中没有人说过“我将在1.66个月内到那里”,也没人会要求您在几天内转换1.66 months
。
这是我自己的答案,是cherouvim的变体
final Date startDate = new GregorianCalendar (2014, 0, 1).getTime ();
final Date endDate = new GregorianCalendar (2014, 1, 21).getTime ();
System.out.println ((endDate.getTime () - startDate.getTime ()) / (float) (1000L * 60 * 60 * 24 * 30));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.