我在尝试在两个日期之间打印给定期间时遇到问题。
让我告诉你细节,然后我会把代码:
日期a = 5月20日, 日期b = 6月19日
介于两者之间的时间应为30天。(或29,无所谓)
但鉴于我的代码,它说它只有1天。
你能帮我解决这个问题吗?我想要的是让整个时期介于两者之间:29天。感谢。
public static void main(String args[]) {
Calendar calA = Calendar.getInstance();
calA.set(Calendar.MONTH, 5);
calA.set(Calendar.DAY_OF_MONTH, 20);
Calendar calB = Calendar.getInstance();
calB.set(Calendar.MONTH, 6);
calB.set(Calendar.DAY_OF_MONTH, 19);
DateTime da = new DateTime(calA.getTime());
DateTime db = new DateTime(calB.getTime());
Period p = new Period(da,db);
System.out.println(printPeriod(p));
}
private static String printPeriod(Period period) {
PeriodFormatter monthDaysHours = new PeriodFormatterBuilder()
.appendMonths()
.appendSuffix(" month"," months")
.appendSeparator(",")
.appendDays()
.appendSuffix(" day", " days")
.appendSeparator(",")
.appendHours()
.appendSuffix(" hour"," hours")
.toFormatter();
return monthDaysHours.print(period.normalizeStandardPeriodType());
}
答案 0 :(得分:3)
这段时间已创建为“4周1天” - 但您不打印几周。
假设您需要年/月/日/时间,请将Period构造函数调用更改为:
Period p = new Period(da, db, PeriodType.yearMonthDayTime());
然后摆脱对normalizeStandard()
的调用(我实际上找不到一个名为normalizeStandardPeriodType()
的方法;我假设这是一个错字。)
当然,这将忽略这一时期的任何年份。您可以使用:
PeriodType pt = PeriodType.yearMonthDayTime().withYearsRemoved();
Period p = new Period(da, db, pt);