【问题标题】:Simple Date Parsing简单的日期解析
【发布时间】:2016-08-21 13:34:52
【问题描述】:

我一直在纠结一个奇怪的问题。

我正在尝试解析一个看起来像这样的日期格式

“格林威治标准时间 2016 年 8 月 18 日星期四 16:25:25”

只有这样的月份和日期

“08/18”

我使用两个SimpleDateFormat,来解析和格式化输入和输出

DateFormat inputFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
DateFormat outputFormat = new SimpleDateFormat("MM/dd");

然而,当使用 genymotion 模拟器时,一切似乎都是正确的

但说到真正的手机,就说索尼 Xperia Care

以下问题不断出现

java.text.ParseException:无法解析的日期:“Wed,2016 年 8 月 10 日 15:40:57 GMT”(偏移量 0)

那么发生这种情况的原因是什么?

【问题讨论】:

  • 欢迎来到 Stack Overflow!能否在您努力解决问题的同时,在内容中提供更好的标题和更详细的信息?

标签: java android simpledateformat


【解决方案1】:

尝试使用

new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy",Locale.ENGLISH);

【讨论】:

    【解决方案2】:

    您的 String-DAte 包含与特定语言相关的信息,因此您需要为此类信息准备 SimpleDAteFormat。 ERGO:您需要提供 Locale

    示例:

    public static void main(String[] args) throws ParseException {
    String dateStr = "Thu, 18 Aug 2016 16:25:25 GMT";
    DateFormat inputFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH);
    Date d = null;
    d = inputFormat.parse(dateStr);
    DateFormat outputFormat = new SimpleDateFormat("MM/dd");
    System.out.println("After format: " + outputFormat.format(d));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多