2

私はこのような日付文字列を持っています " 2010-12-10T20:03:53-06:00 " Javaで同じものを同等の日付オブジェクトに変換したい。これを行う方法はありますか?

4

6 に答える 6

2

あなたが探しているのは SimpleDateFormat.parse() です。文字列を Date オブジェクトに変換します。

http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html

于 2012-11-20T06:50:56.030 に答える
1

XJava 7を使用している場合は、UTCオフセットの新しい指定子を使用して、文字列をマッサージしなくても大丈夫です。

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX", Locale.US);
Date date = format.parse(text);

(テストして確認します-JDK7を自分でインストールしたとき:)

ただし、一般的に、日付の処理にはJodaTimeを使用することを強くお勧めします。その指定子は、コロンでオフセットを処理できます。Z

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ")
                                            .withLocale(Locale.US);
DateTime dateTime = formatter.parseDateTime(text);

実際、ISODateTimeFormatこれをさらに簡単にするクラスがあります。

DateTimeFormatter formatter = ISODateTimeFormat.dateTimeNoMillis();

Joda Timeは、組み込みのAPIよりもはるかに優れた日付/時刻APIです。(完璧にはほど遠いですが、それよりもはるかに優れていDateますCalendar...)

于 2012-11-20T07:00:29.533 に答える
1

これには DateFormat クラスを使用する必要があります。

: まず、タイムゾーン部分でそれを取り除き、日付文字列を次のようにする必要があります

2010-12-10T20:03:53-0600

以下のコード スニペットを使用します。

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");    
Date d = formatter.parse("2010-12-10T20:03:53-0600");

注:Java 6でこれを確認しました.Skeet氏は、Java 7について詳しく知らないため、Java 7を扱うより良い答えを述べました

于 2012-11-20T06:52:50.260 に答える
0

Java 7までは、標準のJDK Dateを使用してタイムゾーンにコロンを含む日付を解析することはできません。Java7より前のタイムゾーンは、名前または形式の完全なタイムゾーンである必要があります-0600

3つのオプションがあります。

  • Java 7以降を使用する場合は、次のパターンを使用してください:"yyyy-MM-dd'T'HH:mm:ssX"SimpleDateFormatを使用
  • 手動でコロンを削除して解析します
  • Joda Timeを使用します。例:https ://stackoverflow.com/a/2375539/829571

2番目のオプションの例を次に示します。

public static void main(String[] args) throws ParseException {
    String input = "2010-12-10T20:03:53-06:00";
    int colon = input.lastIndexOf(":");
    input = input.substring(0, colon) + input.substring(colon + 1, input.length());
    System.out.println(input);
    DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
    Date date = fmt.parse(input);
    System.out.println("date = " + date);
}
于 2012-11-20T06:57:06.747 に答える
0

Joda timeを使用します。強力で使いやすいです。

于 2012-11-20T06:49:54.333 に答える