2012-03-02 4 views
0

私はアンドロイドのアプリでカレンダークラスを使用して日付の年を計算し、今年の年と比較します。日差Javaのカレンダーを使用

Date now=new Date(); 
Calendar ca1 = Calendar.getInstance(); 
     ca1.set(now.getYear(), now.getMonth(), now.getDate()); 
     int nowC=ca1.get(Calendar.DAY_OF_YEAR); 

//Date arg0=say,get from user 
     Calendar ca2 = Calendar.getInstance(); 
     ca2.set(arg0.GetBirthDay().getYear(),arg0.GetBirthDay().getMonth(),arg0.GetBirthDay().getDate()); 
     int d1C=ca2.get(Calendar.DAY_OF_YEAR); 

私は自分のアプリケーションをデバッグすると私は、現在の日の次の値を参照してください: 金3月2日夜02時18分33秒アジア/テヘラン2012

とarg0のため: ここで私が使用したコードです金3月2日午前0時00分○○秒アジア/テヘラン1979

そして「nowC」は62、および「D1C」は61

を持ってしまった私は彼らが彼らの両方が同じ月と日を持っている同じ原因であることを期待、また、以下のようにjodaパッケージのDateTimeクラスを使用すると、同じ結果:

int ndy=dtnow.getDayOfYear(); 
int d1dy=dt1.getDayOfYear(); 

なぜそれが起こっているのですか?

答えて

2

2012年はうるう年、1979年ではありませんでした。今年3月2日までに余分な日があるので、両方のAPIがあなたに正しい答えを与えています!

私はあなたが期待しているセマンティクスを得るために、月と日の両方を比較したいと思っています。

+0

正確に現在の日付から誰かの誕生日を比較したいと思います。あなたが知っているように、その誕生日の月と日がより重要です –

関連する問題