2016-07-07 5 views
0

以下のコードを使用して2つの特定の日付間で異なる日を取得しようとしましたが、同じ日付がアンドロイド6.0私はcal.getTimeInMillisは()がする)(異なるOSのバージョンに同じ値を返しますが、base_cal.getTimeInMillisできることに気づいAndroidは2日間の日数を取得します。アンドロイド6.0以降の別の値を返す

Calendar cal = Calendar.getInstance(); 
Calendar base_cal = Calendar.getInstance(); 
baseDate = chineseDateFormat.parse("1900-1-3"); 
     base_cal.setTime(baseDate); 
int offset = (int) ((cal.getTimeInMillis() - base_cal.getTimeInMillis())/86400000L); 

:ここ

は一日数を取得するために私の関数でありますの異なる値を返すさまざまなアンドロイドバージョンがあり、いつも毎日違う

+0

で例を見ることができますhttps://github.com/dlew/joda-time-android

で特異的にAndroid用のポートがあります。私はこれを使って作業しました。さらに、あなたがそれを認識していない場合、2016年はうるう年です - これはあなたが得ている結果に影響するかもしれません。ベスト。 – statosdotcom

+0

"chineseDateFormat"オブジェクトが正しく定義されていますか? –

+0

はいchineseDateFormatオブジェクトが正しく定義されています – MinFu

答えて

2

"baseDate"は日付文字列を解析した結果です。私は中国語を読んでいないので、フォーマットが何であるかはわかりませんが、解析された日付はgetTimeInMillis()によって返された日付とは異なる時刻になり、結果は丸めになりますエラー。

私はさらに、あなたが期待していることは、時刻に関係なく、2つの日付の違いであると考えています。

これを正しく、繰り返し実行する最も簡単な方法は、Jodaの日付ライブラリを使用することです。あなたは合理的な答えを見つけることができない場合は、「UNIXエポック」で作業してみてください、Number of days between two dates in Joda-Time

+1

実際、Joda-TimeはJava 8以降に組み込まれたjava.timeフレームワークに取って代わられています。 java.timeの機能の多くは、[ThreeTen-Backport](http://www.threeten.org/threetenbp/)プロジェクトのJava 6&7にバックポートされ、[ThreeTenABP](https ://github.com/JakeWharton/ThreeTenABP)。 –

関連する問題