1. ホーム
  2. java

[解決済み] 日付の解析方法は?[重複している]。

2022-04-18 23:10:47

質問

<余談
この質問には、すでにここで回答があります :
クローズド 5年前 .

でこの日付をパースしようとしています。 SimpleDateFormat と表示され、動作しない。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Formaterclass {
    public static void main(String[] args) throws ParseException{
        String strDate = "Thu Jun 18 20:56:02 EDT 2009";
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Date dateStr = formatter.parse(strDate);
        String formattedDate = formatter.format(dateStr);
        System.out.println("yyyy-MM-dd date is ==>"+formattedDate);
        Date date1 = formatter.parse(formattedDate);

        formatter = new SimpleDateFormat("dd-MMM-yyyy");
        formattedDate = formatter.format(date1);
        System.out.println("dd-MMM-yyyy date is ==>"+formattedDate);
    }
}

このコードをstrDate=で試すと "2008-10-14" 肯定的な答えが返ってきました。何が問題なのでしょうか?どうすればこの形式を解析できますか?

PS. 私はこの日付を jDatePicker また、ユーザーが日付を選択したときに表示される日付の書式を変更する方法については、何も説明がありません。

解決方法は?

異なるフォーマットで設定されたSimpleDateFormatを持つ日付のパースは期待できません。

Thu Jun 18 20:56:02 EDT 2009" という日付文字列を解析するためには、以下のような SimpleDateFormat が必要です(大まかにはこのようになります)。

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

これを使用して文字列を日付にパースし、他の SimpleDateFormat を使用してその日付を希望のフォーマットに変換します。

        String input = "Thu Jun 18 20:56:02 EDT 2009";
        SimpleDateFormat parser = new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");
        Date date = parser.parse(input);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate = formatter.format(date);

        ...

JavaDocです。 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html