簡體   English   中英

Android(Java)GregorianCalendar異常行為

[英]Android (Java) GregorianCalendar odd behavior

我在使用Java Date類型時遇到問題。 為什么在我的代碼中daysdays1days1 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM