为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕姐8265434 2023-10-12 17:06:07
我的日期格式为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();    }有人可以帮我解决这个问题吗?
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

从 java-8 开始,您可以使用ZonedDateTime输入日期的 with 模式,即EEE MMM dd HH:mm:ss zzz yyyy


String 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。


查看完整回答
反对 回复 2023-10-12
?
慕斯王

TA贡献1864条经验 获得超2个赞

您已将格式化程序定义为“日期、月份、年份”的概念,然后尝试要求它解析根本不是这种格式的字符串。您需要制作一个可以格式化的格式化程序Sun Oct 01 00:00:00 EDT 2017dd-MMM-yyyy显然不是。SimpleDateFormat 的 javadoc会告诉您需要使用什么字母组合。

一旦你掌握了这一点,就很容易了:用这个新的格式化程序进行解析,然后.format用你的旧格式化程序(那个dd-MMM-yyyy)进行调用。


查看完整回答
反对 回复 2023-10-12
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

您双重创建 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"))


查看完整回答
反对 回复 2023-10-12
  • 3 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信