我遇到java Date
类型的问题。为什么我的代码days
和days1
都等于88?
GregorianCalendar dateNow = new GregorianCalendar(2014,03,31);
GregorianCalendar dateFirstDay = new GregorianCalendar(2014,01,01);
long diffInMillies = dateNow. getTimeInMillis() - dateFirstDay. getTimeInMillis();
int days = (int) (diffInMillies / (1000*60*60*24));
GregorianCalendar dateNow1 = new GregorianCalendar(2014,04,01);
GregorianCalendar dateFirstDay1 = new GregorianCalendar(2014,01,01);
long diffInMillies1 = dateNow1. getTimeInMillis() - dateFirstDay1. getTimeInMillis();
int days1 = (int) (diffInMillies1 / (1000*60*60*24));
答案 0 :(得分:3)
原因是你给dateNow一个月03,这意味着它将它作为4月,因为它从0开始,0 = 1月; 1 = 2月等。 现在,您将每月的日期定为31.因为4月只有30天,所以它将递增并将日期视为5月1日,这与您的dateNow1相同。
因此价值相同。
希望这有帮助。
答案 1 :(得分:3)
这是预期的行为,事实上:
GregorianCalendar dateNow = new GregorianCalendar(2014,03,31);
表示与
相同的日期GregorianCalendar dateNow1 = new GregorianCalendar(2014,04,01);
这是因为月份计数从0
开始,所以03
是4月而不是3月。
访问Official GregorianCalendar JavaDoc以获取有关构造函数使用和其他内容的更多信息。