3

以前、次の質問を投稿しました。Javaでこの日付を変換するにはどうすればよいですか。

しかし、この文字列を日付/時刻に変換する方法を知りたいと思います。

2010-03-15T16:34:46Z

例:03/15/10

更新しました:

String pattern = "MM/dd/yy 'at' HH:mm";
                Date date = new Date();
                try {
                    date = new SimpleDateFormat(pattern).parse(q.getUpdated_at());
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                dateText.setText(new SimpleDateFormat("MM/dd/yy 'at' hh:mma").format(date));

次のような結果が得られます。

Mon Mar 15 16:34:50 MST 2010

どうすればフォーマットできますか

03/15/10 at 4:34PM

4

3 に答える 3

8

SimpleDateFormatjoda-timeの 両方が、次のDateTimeFormatパターンを使用してこれを解析できます。

String pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'";

例えば:

Date date = new SimpleDateFormat(pattern).parse(dateString);

そして(joda-time):

DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern);
DateTime dateTime = dtf.parseDateTime(s);

アップデート

2つの日付形式が関係しています。1つは入力の解析用で、もう1つは出力の書式設定用です。それで:

dateText.setText(new SimpleDateFormat("MM/dd/yy 'at' hh:mma").format(date));

(もちろん、最適化のために、SimpleDateFormat一度だけインスタンス化して再利用できます)

于 2010-09-25T19:51:08.077 に答える
2

簡単に言うと、文字列形式の日付を別の文字列形式の日付変換する必要あります。あなたが持っている:

2010-03-15T16:34:46Z

そしてあなたが欲しい

03/15/10 at 4:34PM

java.util.Date最初に質問で暗示したように、オブジェクトを使用することになりたくありません。また、javadoctoString()で定義されているように固定形式が返されるため、これを使用する必要はありません。

Bozhoの答えはまだ当てはまります。を使用しjava.text.SimpleDateFormatます。まず、別の文字列形式にフォーマットし直すことができるように、文字列形式の日付をオブジェクトに解析する必要があります。Date

// First parse string in pattern "yyyy-MM-dd'T'HH:mm:ss'Z'" to date object.
String dateString1 = "2010-03-15T16:34:46Z";
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(dateString1);

// Then format date object to string in pattern "MM/dd/yy 'at' h:mma".
String dateString2 = new SimpleDateFormat("MM/dd/yy 'at' h:mma").format(date);
System.out.println(dateString2); // 03/15/10 at 4:34PM
于 2010-09-26T18:47:58.380 に答える
0

出力文字列をフォーマットする場合は、コードの次の行を変更します

dateText.setText(date.toString());

dateText.setText(String.format("%1$tm/%1$td/%1$ty at %1$tl:%1$tM%1$Tp", date));
于 2010-09-26T10:03:41.110 に答える