3

私はJavaユーティリティの日付を持っていますThu Feb 28 15:35:00 GMT+00:00 2013

に変換する方法HH:MM

以下のスニペットを使用してこれを実行しようとしています:

SimpleDateFormat formatter = new SimpleDateFormat("HH:MM");
        formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
        return formatter.format(objDate);

それは正しい結果を与えますdd mmmが、常に02として分を与えますHH:MM

この関数の何が問題なのか教えてください。

4

2 に答える 2

17

MMの値ですSimpleDateFormat。あなたがしたいmmHHを使用すると 24 時間時計 (00-23) が得られることに注意してください... hh12 時間時計 (01-12) に使用できますが、その場合はおそらく午前/午後指定子も必要です。

利用可能なさまざまなフォーマット指定子の詳細については、ドキュメントをSimpleDateFormat参照してください。

また、国際化の目的で、以下を使用したほうがよい場合があることに注意してください。

DateFormat formatter = DateFormat.getTimeInstance(DateFormat.SHORT, locale);

...指定されたロケールに適切な「短い時間形式」を使用するようにします。これが表示 (人間が読める) 目的である場合は適切です。コンピュータで読み取り可能な形式の場合、カスタム形式を作成しても問題ありませんがLocale.US、別のカレンダーや形式記号 (時間の区切り記号など) を取得しないように、明示的に使用することをお勧めします。

于 2013-02-28T10:17:10.163 に答える
3

使用する

String str ="Thu Feb 28 15:35:00 GMT+00:00 2013";

SimpleDateFormat formatter_from = new SimpleDateFormat("EEE MMM dd hh:mm:ss ZZ yyyy");
SimpleDateFormat formatter_to = new SimpleDateFormat("hh:mm");

try {
    java.util.Date d = formatter_from.parse(str);

    System.out.println(formatter_to.format(d));

} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
于 2013-02-28T10:17:06.490 に答える