【问题标题】:ParseException: Unparseable date: "Wed, 22 Apr 2015 05:45:42 GMT"ParseException:无法解析的日期:“2015 年 4 月 22 日星期三 05:45:42 GMT”
【发布时间】:2015-07-01 12:03:47
【问题描述】:

我正在尝试将“Wed, 22 Apr 2015 05:45:42 GMT”转换为“yyyy MM dd - HH:mm”

但该字符串并不适合所有这些简单的日期格式,它在所有三个中都给出了例外

new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss");
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss 'Z'");

【问题讨论】:

  • 你有 CrashLog 吗?
  • 你的语言环境是什么?试试new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US) `
  • 我在西班牙,崩溃日志是问题标题:ParseException: Unparseable date: “Wed, 22 Apr 2015 05:45:42 GMT”
  • 你写的是EEE, d MMM yyyy HH:mm:ss Z,它是单d。用 dd 代替 d

标签: android date-format simpledateformat


【解决方案1】:

我也可以重现您的问题,因为我也在一个非英语国家。解决方案是将英语指定为语言,因为您的输入包含英语单词/缩写(查看星期几“星期三”!)。以下解决方案有效:

SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
Date d = sdf.parse("Wed, 22 Apr 2015 05:45:42 GMT");
SimpleDateFormat out = new SimpleDateFormat("yyyy MM dd - HH:mm", Locale.ROOT);
System.out.println(out.format(d)); // output in the system timezone

您的应用的用途(全球与否)并不重要。 唯一重要的事实是您的文本输入的语言。 如果这在语言上有所不同,那么您必须首先确定相关设备的语言(可能是Locale.getDefault())并设置它在您的 SimpleDateFormat-object 上。

【讨论】:

  • 谢谢,用 new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z",Locale.ENGLISH) 解决了
【解决方案2】:

在日期格式中使用小 z

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'z'");

我已经用下面的代码检查过了,它工作正常。

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
    try {
        Date date =simpleDateFormat.parse("Wed, 22 Apr 2015 05:45:42 GMT");
        Log.e(MainActivity.class.getSimpleName(),"date : "+date.toString());
    } catch (ParseException e) {
        e.printStackTrace();
    }

【讨论】:

  • 我已经编辑过应该是 dd 而不是 d 并且 z 应该是小写的。
猜你喜欢
  • 1970-01-01
  • 2015-06-04
  • 2015-02-16
  • 1970-01-01
  • 2020-12-07
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多