0

いくつかの日付の文字列があります:

[2012年7月20日5:11:36,670 UTC PM、2012年7月20日5:11:36,683 UTC PM]

ParsePosition parsePos = new ParsePosition(1);
SimpleDateFormat format2 = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss,SSS z a");
System.out.println(format2.parse(entry.getValue().toString(), parsePos)) ;

出力:Fri Jul 20 06:11:36 BST 2012

出力を。にする必要があります20-Jul-2012 5:11:36,670 UTC PM

SimpleDateFormat別の出力がないように、にLOCALEを設定する必要がありますか?

4

2 に答える 2

2

タイムゾーンを設定する必要がありますが、さらに重要なことは、実際にフォーマットを使用して日付をフォーマットするだけです。

Date date = format2.parse(...);
String formattedDate = format2.format(date);
System.out.println(formattedDate);

あなたのコードは次のとおりです。

Date date = format2.parse(...);
System.out.println(date.toString());

ただし、文字列を日付に解析し、まったく同じ形式を使用して日付を表示するポイントをよく理解していません (ただし、文字列が実際に有効な日付であることを検証する場合を除きますが、元の文字列を単純に再利用できます) )。

于 2012-07-22T12:19:04.740 に答える
1

2 つの小さな問題があります。

  1. hhではなく、時間に使用しHHます。Hは「1 日の時間 (0-23) であるため、AM/PM マーカーでは正しく機能しませんa。2 つの例の日付文字列は、PM ではなく AM に解析されます。
  2. SimpleDateFormat を使用して文字列を解析していますが、フォーマットはしていません。を使用しformat2.format(format2.parse(entry.getValue().toString())ます。

完全な例を次に示します。

SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss,SSS z a");
String input = "20-Jul-2012 5:11:36,670 UTC PM";
Date date = format.parse(input);
String output = format.format(date);
System.out.println(output);

結果:

20-Jul-2012 05:11:36,670 UTC PM
于 2012-07-22T12:23:56.070 に答える