![](/img/trans.png)
[英]Strange behavior of the java.util.GregorianCalendar class in different android versions
[英]Android (Java) GregorianCalendar odd behavior
我在使用Java Date
類型時遇到問題。 為什么在我的代碼中days
和days1
都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的月,這意味着它將4月作為它,因為它從0開始。月份= 0; Jan; 1 = Feb等。現在,您給一個月中的一天作為31。由於4月只有30天,因此會將日期遞增並將其視為5月1日,與dateDow1相同。
因此,相同的值。
希望這可以幫助。
實際上,這是預期的行為:
GregorianCalendar dateNow = new GregorianCalendar(2014,03,31);
表示與
GregorianCalendar dateNow1 = new GregorianCalendar(2014,04,01);
這是因為月份數從0
開始,所以03
是4月而不是3月。 請訪問GregorianCalendar JavaDoc官方網站 ,以獲取有關構造函數使用及其他方面的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.