小编典典

如何解析日期?

all

我正在尝试解析此日期,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。我从 a 得到了这个日期,jDatePicker并且没有关于如何修改用户选择日期时得到的日期格式的说明。


阅读 62

收藏
2022-07-16

共1个答案

小编典典

您不能期望使用设置为不同格式的 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

2022-07-16