0

英国 (イングランド) に従ってレポートを作成する必要がある問題に行き詰まりました。今日、2013 年 7 月 9 日にレポートを実行しました。英国時間では 5:58 AM で、インドでは 10:28 AM でした。ファイル生成には英国のタイムスタンプが含まれている必要がありますが、ファイルにはそのタイムスタンプがありません。これを使用しています

String currDate = new SimpleDateFormat("MM-dd-yyyy-HH-mm").format(new Date());
System.out.println("ABC_0101-"+currDate);

ファイル スタンプで英国時間を取得する方法を教えてください。24 時間形式で何か不足していますか?

4

1 に答える 1

3

フォーマッタのタイムゾーンを設定するだけです:

TimeZone london = TimeZone.getTimeZone("Europe/London");
SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy-HH-mm", Locale.UK);
format.setTimeZone(london);

System.out.println("ABC_0101-" + format.format(new Date()));

余談ですが:

  • これは非常に奇妙なフォーマット パターンです。あなたの管理下にある場合は、自然にソート可能なものを使用することをお勧めします。yyyy-MM-ddTHHmmss
  • 英国の日付記号が使用されるように、英国のロケールを明示的に使用しました。この場合はおそらく問題にはなりませんが、他の場合には問題になる可能性があります。
  • UTC ではなく、実際に英国のタイム ゾーンが必要なのですか? 英国のタイム ゾーンは、夏時間への移行により、あいまいな値になります。UTC を使用する方が理にかなっている可能性があります。
  • 多くの日付/時刻処理を行っている場合は、Joda Timejava.util.Dateの使用を検討する必要があります。これは、等よりもはるかに優れた日付/時刻ライブラリです。
于 2013-07-09T05:10:46.117 に答える