一尘不染

Java-如何解析日期?

java

我正在尝试解析此日期,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 2019";
        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 =尝试此代码"2019-10-14",我将获得肯定的答案。有什么问题?如何解析这种格式?

PS。我从jDatePicker那里得到了这个日期,并且没有关于用户选择日期时如何修改日期格式的说明。


阅读 562

收藏
2020-02-25

共1个答案

一尘不染

你不能期望使用设置为其他格式的SimpleDateFormat解析日期。

要解析“ 2009年Thu Jun 18 20:56:02 EDT 2019”日期字符串,你需要这样的SimpleDateFormat(大致):

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

使用此方法将字符串解析为Date,然后使用其他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);

        ...
2020-02-25