3
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        System.out.println(
                DateTimeZone.forID("Europe/Copenhagen")
        );

        DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm dd MM YY Z");
        System.out.println(
                formatter.parseDateTime("19:30 29 8 11 Europe/Copenhagen")
        );
    }
}

これはコペンハーゲンのタイムゾーンで日付を解析することを期待していますが、次のように失敗します:

Europe/Copenhagen
Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "19:30 29 8 11 Europe/Copenhagen" is malformed at "Europe/Copenhagen"
    at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:683)
    at Main.main(Main.java:13)

なんで?

4

3 に答える 3

3

JodaTime DateTimeFormat javadocsを見ると、notDateTimeFormat を使用する必要があります。ZZZZ

そのドキュメントの表にはZしか表示されていないため、見落としがちです。ページを少し下ると、「ゾーン:「Z」はコロンなしでオフセットを出力し、「ZZ」はコロン付きのオフセットを出力し、「ZZZ」またはそれ以上の出力を出力しますゾーンID。」

于 2011-08-07T21:47:04.240 に答える
2

ヨーロッパ/コペンハーゲンなどのタイム ゾーン ID の解析は、Joda-Time v2.0 でのみ追加されました。

于 2011-08-08T12:05:49.880 に答える
1

私が使用しているソリューションは、これまでのところ機能しているようです。

public static void main(String[] args) {
    DateTimeFormatter formatterC = DateTimeFormat.forPattern("HH:mm dd M YY").withZone(DateTimeZone.forID("Europe/Copenhagen"));
    System.out.println(
        formatterC.parseDateTime("19:30 29 8 11")
    );
}
于 2011-08-08T11:56:26.187 に答える