11

私は Joda を使用して日付を解析しており、先頭のゼロが使用されていない形式を使用しています。

 Mon Nov 20 14:40:36 2006
 Mon Nov  6 14:40:36 2006

dayOfMonth フィールドの左側に空白が埋め込まれていることに注意してください。

現在、2つの異なるフォーマットを使用し、1つが失敗した場合は再解析する必要があるようです

"EEE MMM dd HH:mm:ss yyyy"
"EEE MMM  d HH:mm:ss yyyy"

両方のケースを処理する単一の形式 (または API スイッチ) はありますか? (SimpleDateFormatの答えは同じですか-私は使用していませんか?)

4

3 に答える 3

8

これを確認するための簡単なプログラムを作成しました-

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy");

try {
    String source1 = "Mon Nov 20 14:40:36 2006";
    Date d1 = sdf.parse(source1);
    String source2 = "Mon Nov  6 14:40:36 2006";
    Date d2 = sdf.parse(source2);

    String res1 = sdf.format(d1);
    String res2 = sdf.format(d2);

    System.out.println(source1 +"="+ res1);
    System.out.println(source2 +"="+ res2);
} catch (ParseException e) {
    e.printStackTrace();
}

これからの出力は-

Mon Nov 20 14:40:36 2006=Mon Nov 20 14:40:36 2006
Mon Nov  6 14:40:36 2006=Mon Nov 6 14:40:36 2006

したがって、source2には余分なスペースがありますが、それでも

EEE MMM d HH:mm:ss yyyy

お役に立てば幸い

于 2011-05-04T08:52:07.863 に答える
5

上記のようにlogstash 1.1.1で単一の「d」を使用してみましたが、先頭に余分なスペースがある1桁の日が解析されたときに、不正な日付についてまだ不満がありました。次のlogstashルールは機能しました。

timestamp => [ "MMM dd HH:mm:ss", "MMM  d HH:mm:ss" ]

2 つの日付形式の順序は関係ありません。両方の形式を追加すると、警告は出力されなくなりました。

于 2012-09-04T22:28:14.257 に答える