Android (Java) GregorianCalendar 奇怪的行为
Android (Java) GregorianCalendar odd behavior
我对 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));
原因是您给 dateNow 的月份是 03,这意味着它将它作为四月,因为它从 0 开始这个月。0=Jan;1=Feb 等等。
现在,您将月份的第几天指定为 31。由于 4 月只有 30 天,因此它正在递增并将日期视为 5 月 1 日,这与您的 dateNow1 相同。
因此值相同。
希望对您有所帮助。
这是预期的行为,事实上:
GregorianCalendar dateNow = new GregorianCalendar(2014,03,31);
表示与
相同的日期
GregorianCalendar dateNow1 = new GregorianCalendar(2014,04,01);
这是因为月份是从 0
开始计算的,所以 03
是四月而不是三月。
访问 Official GregorianCalendar JavaDoc 以获取有关构造函数使用和其他方面的更多信息。
我对 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));
原因是您给 dateNow 的月份是 03,这意味着它将它作为四月,因为它从 0 开始这个月。0=Jan;1=Feb 等等。 现在,您将月份的第几天指定为 31。由于 4 月只有 30 天,因此它正在递增并将日期视为 5 月 1 日,这与您的 dateNow1 相同。
因此值相同。
希望对您有所帮助。
这是预期的行为,事实上:
GregorianCalendar dateNow = new GregorianCalendar(2014,03,31);
表示与
相同的日期GregorianCalendar dateNow1 = new GregorianCalendar(2014,04,01);
这是因为月份是从 0
开始计算的,所以 03
是四月而不是三月。
访问 Official GregorianCalendar JavaDoc 以获取有关构造函数使用和其他方面的更多信息。