猿问

如何在java中将日期字符串EEE MMM dd解析为yyyy-MM-dd

我的日期格式为EEEEE MMMMM yyyy HH:mm:ss.SSSZ,我想将其转换为 java 中的 yyyy-MM-dd 格式,我尝试了以下方法,但出现了此异常java.text.ParseException: Unparseable date:


   SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");

    String dateInString = "Sun Oct 01 00:00:00 EDT 2017";


    try {


        Date date = formatter.parse(dateInString);

        System.out.println(date);

        System.out.println(formatter.format(date));


    } catch (ParseException e) {

        e.printStackTrace();

    }

有人可以帮我解决这个问题吗?


慕姐8265434
浏览 212回答 3
3回答

翻阅古今

从 java-8 开始,您可以使用ZonedDateTime输入日期的 with 模式,即EEE MMM dd HH:mm:ss zzz yyyyString dateInString = "Sun Oct 01 00:00:00 EDT 2017";ZonedDateTime time = ZonedDateTime.parse(dateInString,DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy"));System.out.println(time.toLocalDate());   //2017-10-01默认情况下,LocalDateISO-8601 日历系统中没有时区,例如 2007-12-03。

慕斯王

您已将格式化程序定义为“日期、月份、年份”的概念,然后尝试要求它解析根本不是这种格式的字符串。您需要制作一个可以格式化的格式化程序Sun Oct 01 00:00:00 EDT 2017,dd-MMM-yyyy显然不是。SimpleDateFormat 的 javadoc会告诉您需要使用什么字母组合。一旦你掌握了这一点,就很容易了:用这个新的格式化程序进行解析,然后.format用你的旧格式化程序(那个dd-MMM-yyyy)进行调用。

慕雪6442864

您双重创建 DateFormat 一次解析和一次格式化DateFormat dfParse = new SimpleDateFormat("EEEEE MMMMM yyyy HH:mm:ss.SSSZ");DateFormat dfFormat = new SimpleDateFormat("yyyy-MM-dd");dfFormat.format(dfParse.parse("Sun Oct 01 00:00:00 EDT 2017"))
随时随地看视频慕课网APP

相关分类

Java
我要回答