如何使用Joda-Time将天数转换为月数和天数。例如,当我有33天时,它应显示1个月和2天。
public static void main(String[]args)
{
Calendar calendar = new GregorianCalendar();
int years = calendar.get(Calendar.YEAR);
int month = (calendar.get(Calendar.MONTH))+1;
int day = calendar.get(Calendar.DATE);
DateTime startDate = new DateTime(years, month, day, 0, 0, 0, 0);
DateTime endDate = new DateTime(2014, 7, 3, 0, 0, 0, 0);
Days d = Days.daysBetween(startDate, endDate);
int days = d.getDays();
int t = 1000 * 60 * 60 *24;
int days = days/t;
System.out.println(days);
}
答案 0 :(得分:6)
您可以使用课程org.joda.time.Period。
例如:
Period p = new Period(startDate, endDate, PeriodType.yearMonthDayTime());
System.out.println(p.getMonths());
System.out.println(p.getDays());
答案 1 :(得分:0)
尝试创建一个小数部分数来表示月份对我来说毫无意义,因为几个月有不同的天数(28,29,30,31)。
明智的ISO 8601标准定义了一种文本方式来表示以月和日为单位的时间跨度,称为Durations。 Joda-Time为此目的有一个名为Period的类。请原谅不匹配,因为还没有日期时间术语的标准定义。
有关使用Period类的示例,请参阅此问题的this other answer by Ilya。
文字格式为PnYnMnDTnHnMnS
,其中P
表示"期间"并且T
将日期部分与时间部分分开。其他部分是可选的。一个月零两天将是P1M2D
。 Joda-Time Period类既解析又生成这样的字符串。