对于startDate和endDate,如何确定以月和日为单位的时间段(剩下的内容):
String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
SimpleDateFormat format = new SimpleDateFormat(pattern);
Date start = format.parse("2016-11-09T02:00:00.000Z");
Date end = format.parse("2017-09-30T09:00:00.000Z");
因此我想要:10个月和22天(结束日期)
答案 0 :(得分:4)
如果您可以使用Java 8
,最好使用LocalDateTime
和Period
:
ZonedDateTime dateTime = ZonedDateTime.parse("2016-11-09T02:00:00.000Z");
ZonedDateTime end = ZonedDateTime.parse("2017-09-30T09:00:00.000Z");
System.out.println(Period.between(dateTime.toLocalDate(),end.toLocalDate()));
结果是P10M21D
10个月和21天
答案 1 :(得分:0)
此代码应该可以正常使用。这是使用JODA Time完成的。当您使用jodatime标记此问题时,我确信,您将需要包含在项目中的jodatime包。
String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
SimpleDateFormat format = new SimpleDateFormat(pattern);
Date start = format.parse("2016-11-09T02:00:00.000Z");
Date end = format.parse("2017-09-30T09:00:00.000Z");
LocalDate a = LocalDate.fromDateFields(start);
LocalDate b = LocalDate.fromDateFields(end);
Period p = new Period(a, b);
System.out.println("Months: "+((p.getYears() * 12) + p.getMonths()));
System.out.println("Days: "+(p.getWeeks()*7+ p.getDays()));
但是,如果您使用的是Java 8.0或更高版本,则可以坚持使用@Anton建议的解决方案。