给一个辅助函数 int daysInMonth(int month, int year)
该函数返回 how many days in this month
要求实现 getDayMonth(startDate, endDate) 求startDate和endDate之间有多少间隔
要求打印出来 System.out.println(String. format ("%d months %d days", months, days))
给一个辅助函数 int daysInMonth(int month, int year)
该函数返回 how many days in this month
要求实现 getDayMonth(startDate, endDate) 求startDate和endDate之间有多少间隔
要求打印出来 System.out.println(String. format ("%d months %d days", months, days))
可以用java的Calendar类?
不行(▼皿▼#)
题意不是很清楚,如果输入的是(2019.01.15, 2019.03.05),那我该输出啥?
这个也是需要讨论的地方,应该是输出多少个月多少天
//假设startDate < endDate
int month = endDate.month - startDate.month
+ (endDate.year - startDate.year) * 12;
int day;
if(endDate.day >= startDate.day)
day = endDate.day - startDate.day
else{
day = endDate.day - startDate.day +
daysInMonth((endDate.month + 10)%12+1, endDate.year+(endDate.month - 2)/12)
month -= 1;
}
辅助函数 int daysInMonth( int month, int year) 你传year 了吗?
失误,失误
daysInMonth 传的 month的计算是不是过于复杂了?为啥传的是 endDate 的month?
嗯,这样比较省脑子。。。
改了
我觉得应该用startDate的month
2007.3.29 到 2008.2.29日 相差 11个月
2007.3.29 到 2008.3.28日 相差 11个月零28天,这是28+29-29=28,从endDate的上个月借了一个月
感觉还是start date比较容易理解啊
int months = endDate.year * 12 + endDate.month - startDate.Year* 12 - startDate.month - 1;
int days = 0;
if(endDate.day >= startDate.day)
{
months += 1;
days = endDate.day - startDate.day;
}
else
days = endDate.day + daysInMonth(startDate.month, startDate.year) - startDate.day;
刚才没有点上回复。
那么就是这题有点歧义
2019.2.28到2019.3.1差1天,到2019.4.1差1个月零1天
2019.2.28到2019.3.28差1个月,到2019.4.1差1个月零4天
这都写的啥啊,date这个class具体怎么实现?month用什么表示,day是一年里的天数还是当月的天数?常数10是啥,2是啥,magic number满天。这题考的就是你的假设以及解释,加减乘除完全都不重要,算个日期谁都会,是重点的都没有解释和澄清