0

Javaで日付文字列を解析しようとしています。正しい時間を取り戻していますが、分が約 5 ~ 10 ずれているようです。入力文字列と日付オブジェクトの出力とともに、以下のコードを示していますtoString()

私が間違っているアイデアはありますか?これは Android 上にあるため、JodaTime は使用しない方がよいでしょう。

DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"); 

Date date = sdf.parse(input);

return date;

入力文字列 = 2012-11-07T12:47:05.0581816Z

Date toString() = Wed Nov 07 12:56:46 GMT 2012 (ミリ秒 = 1352293006816)

4

2 に答える 2

3

ミリ秒の精度としてマイクロ秒の精度で日付を解析しようとしています。

0581816 は、時刻 12:47:05 に追加されたミリ秒数であり、おそらくご想像のとおり、1 秒の小数ではありません。

ミリ秒未満の精度は で表すことができないためjava.util.Date、最も簡単なオプションは、次のように小数部を切り捨てて日付形式を調整することです。

final DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String input = "2012-11-07T12:47:05.058234234Z";
input = input.replaceFirst("(?<=\\.\\d{3})\\d+", "");
System.out.println(input);
System.out.println(sdf.parse(input));
于 2012-11-07T13:12:26.763 に答える
1

文字列を日付オブジェクトに、またはその逆に変換するときは、同じタイム ゾーンを使用していることを確認してください。

于 2012-11-07T13:20:18.350 に答える