2

Android アプリケーション内で 2 つの GregorianCalendar オブジェクトを比較する必要があります。私は試した:

myCalendar.compareTo(otherCalendar)

myCalendar.getTimeInMillis() > otherCalendar.getTimeMillis()

ubuntu 64ビットで実行されているエミュレーターでは、どちらも正常に動作します。その後、サムスンギャラクシーs2デバイスで試してみましたが、運がありませんでした。実際のデバイスでの比較は逆で、大きいほど結果が小さくなり、その逆になります。以下を使用して、両方のシステムで値を出力します。

Long.toString(myCalendar.getTimeMillis())

エミュレーターでの 1359716008000 の値 (これが正しいと思います) が、実際のデバイスでは -636369904720 に対応することがわかりました。どんな助けでも本当に感謝します!

4

1 に答える 1

1

後世のために、問題は GregorianCalendar 値自体でした。値を次のように割り当てました

SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
myCalendar.setTime(sdf.parse(myStringDate));

必要だったのは

SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss",Locale.US)

ここで述べたように、エミュレーターのデフォルトのロケール(おそらく米国)はデバイス(イタリア語)と同じではなかったため、曜日を文字で誤って解析していたと思います(「EEE」)

于 2013-02-02T17:26:51.213 に答える