0

この2つの日付を解析する必要があります

private static final String d1 = "2013­-04­-02T08:37:56Z";
private static final String d2 = "2013-­04-­02T10:37:56+02:00";

最初にパターンを使用しています

"yyyy-MM-dd'T'HH:mm:ss'Z'"

そして、私が使用している2番目のもの

"yyyy-MM-dd'T'HH:mm:ssXXX"

しかし、私はいつも得ています

java.text.ParseException: Unparseable date: ....

ここに私のテストコード:

private static final String d1 = "2013-­04­-02T08:37:56Z";
private static final String d2 = "2013-­04­-02T10:37:56+02:00";

private static final String DATE_FORMAT_WITH_TIMEZONE = "yyyy-MM-dd'T'HH:mm:ss'Z'";
private static final String DATE_FORMAT_WITH_TIMEZONE2 = "yyyy-MM-dd'T'HH:mm:ssXXX";

public static void main(String[] args) {
    try {
        SimpleDateFormat df = new SimpleDateFormat(DATE_FORMAT_WITH_TIMEZONE);

        Date d = df.parse(d1);
        System.out.println("d1 = " + d);

        df = new SimpleDateFormat(DATE_FORMAT_WITH_TIMEZONE2);
        df.setTimeZone(TimeZone.getTimeZone("Europe/Rome"));
        Date dt = df.parse(d2);
        System.out.println("d2 = " + dt);
    } catch (ParseException ex) {
        ex.printStackTrace();
    }
}

私のコードで何が問題になっていますか?

4

3 に答える 3

3

DateFormat 定義が間違っています:

private static final String DATE_FORMAT_WITH_TIMEZONE = "yyyyMMdd'T'HH:mm:ss'Z'";
private static final String DATE_FORMAT_WITH_TIMEZONE2 = "yyyyMMdd'T'HH:mm:ssXXX";

文字列にマイナス記号がない

更新-:質問を更新した後、記号はマイナス記号ではないと思います。そう見えるだけです。この標識を交換してください。そしてさらに試みる。

于 2016-02-01T14:01:49.967 に答える
0

次のように変更Formatterします。

private static final String DATE_FORMAT_WITH_TIMEZONE = "yyyyMMdd'T'HH:mm:ss'Z'";
private static final String DATE_FORMAT_WITH_TIMEZONE2 = "yyyyMMdd'T'HH:mm:ssXXX";

ただし、JodaTimeこの目的のために使用することをお勧めします。JodaTime の方が優れた機能を備えています。JodaTime を使用すると、次のようなことができます。

DateTimeFormatter df = DateTimeFormat.forPattern("yyyyMMdd'T'HH:mm:ss'Z'");
DateTime dateTime = df.parseDateTime("2013­-04­-02T08:37:56Z");
Date date = dateTime.toDate();
于 2016-02-01T14:06:52.130 に答える
0

例を16進数に変換した後、通常のハイフン( )ではなく、 「ソフトハイフン」と呼ばれる(私のメモ帳++コンバータによると0x2D)同様の文字を使用しているようです。0xC2AD

于 2016-02-01T14:22:04.500 に答える