1

次の日付を解析しようとしています:

 Wed Aug 27 13:08:45 +0000 2008 

(Twitter API 1.1用です)

私は次の形式を作成します。

/**
 * Large twitter date format sample: "Wed Aug 27 13:08:45 +0000 2008"
 */
private static final String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy";

しかしそれは言う:

java.text.ParseException: Unparseable date: "Sun Dec 25 14:49:28 +0000 2011" (at offset 0)
     at java.text.DateFormat.parse(DateFormat.java:626)

何が間違っているのですか?

ありがとう

4

2 に答える 2

4

これはロケールの問題だと思います。そのコードを自分のマシンで実行すると、例外なく期待どおりの結果が得られます。

ヒント:ENGLISHロケールの解析はうまく機能します

 String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy";
 String twiDate = "Wed Aug 27 13:08:45 +0000 2008";
 new SimpleDateFormat(LARGE_TWITTER_DATE_FORMAT, Locale.ENGLISH)
       .parse(twiDate).getHours());

フランスの解析でlocale は、発生したのと同じエラーが発生します

String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy";
String twiDate = "Wed Aug 27 13:08:45 +0000 2008";
System.out.println(new SimpleDateFormat(LARGE_TWITTER_DATE_FORMAT, Locale.FRANCE)
                .parse(twiDate).getHours());
于 2012-09-17T15:19:24.797 に答える
-1

以下は私のために働きます

import java.text.ParseException;
import java.text.SimpleDateFormat;


public class Test {

    private static final String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy";

    /**
     * @param args
     */
    public static void main(String[] args) {
        SimpleDateFormat df = new SimpleDateFormat(LARGE_TWITTER_DATE_FORMAT);

        try {
            System.out.println(df.parse("Wed Aug 27 13:08:45 +0000 2008 "));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
于 2012-09-17T15:20:31.840 に答える