に基づいて非常に異なる値をもたらします。小さなサンプルアプリケーションを作って、私が物事を見ていないか、値が後で私が捕まえていないところで操作されていないことを確認しました。SimpleDateFormat.parseは、私はしばらくの間、この上で、私の頭をバッシングされているAndroidのバージョン
問題は、私は、日付形式の文字列の日付を解析しようとすると、私は、デバイスAPIレベルに応じて、2つの非常に異なる結果を得ることです。ここで
DateFormat utcFormat;
String utcDate = "2017-01-31 18:58:12.2334924Z";
utcFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSSS'Z'");
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
try{
conversion.setText(utcFormat.parse(utcDate).toString());
}
catch (ParseException e){
conversion.setText("exception encountered: " + e.getMessage());
}
は私の結果です:
On Android 4.4.2 device: Tue Jan 31 14:37:06 EST 2017
On Android 6.0.1 device: Tue Jan 31 13:58:12 EST 2017
あなたが見ることができるように、正確に同じ入力に基づいて約40分の違いがあります。デバイスのロケールは同じです(ロケールのハードコーディングも試みましたが)。デバイスの設定時間は同じです。
ここで何か問題がありますか?
「SSS」のみを使用して試してみてのおインプットトリムミリ秒の精度。この場合もまだ異なる結果が表示されますか? –
私はミリ秒のカウントとして「2334924」の解釈は40分(ほぼ)近く分のカウントを与えることに気づきました。たぶんアンドロイド6は、入力が正しく解釈になるというような解釈を変更しましたが、まだ公式ドキュメント内の任意のヒントが見つかりません(とあなたのコード例では、本当に間違ったパターンを使用しないので、間違った計算 - 14時37分06秒ESTは間違っています!)。 –
この場合、ミリ秒をトリミングする簡単な方法はありますか? –