【问题标题】:Keep getting ParseException: Unparseable date [duplicate]不断收到 ParseException:无法解析的日期 [重复]
【发布时间】:2026-01-08 19:45:02
【问题描述】:

我正在开发一个简单的 android 应用程序,我需要在 java、android 中转换一个包含日期和时间的字符串。这是我的字符串的示例格式:

Sun May 20 18:07:13 EEST 2018

这是我尝试将其转换为日期的方法:

SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
Date date = formatter.parse("Sun May 20 18:07:13 EEST 2018");

这是我收到的错误消息。我哪里做错了??

W/System.err: java.text.ParseException: Unparseable date: "Sun May 20 18:07:13 EEST 2018" (at offset 0)

【问题讨论】:

  • 身份证。工作得很好:ideone.com/ZFd7lG
  • 顺便考虑扔掉长期过时且臭名昭著的麻烦SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .使用起来感觉好多了。
  • @OleV.V.我会试一试,谢谢body。
  • 作为 Ole V.V.评论说,麻烦的日期时间类,如 java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 现在是遗留的,被 java.time 类所取代。许多 java.time 功能在ThreeTen-Backport 项目中被反向移植到Java 6 和Java 7。在ThreeTenABP 项目中进一步适用于早期的Android。见How to use ThreeTenABP…
  • 在发布之前始终搜索 Stack Overflow。您可以假设所有基本的日期时间问题都已被询问和回答。

标签: java android date datetime


【解决方案1】:

试试这个:

SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
        Date date = null;
        try {
            date = formatter.parse("Sun May 20 18:07:13 EEST 2018");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println(date);

【讨论】: