为什么我的String变量通过SimpleDateFormat“不可解析”到Date?

时间:2016-12-03 21:17:53

标签: java android date parsing

我正在尝试将格式为String的{​​{1}}值解析为Sat Dec 03 20:30:33 GMT+00:00 2016变量,但我收到Date个异常。我在这里做错了什么?

java.text.ParseException: Unparseable date: "Sat Dec 03 20:30:33 GMT+00:00 2016" (at offset 0)

2 个答案:

答案 0 :(得分:1)

这是有效的

    private static void test1() {
            Date itemDate = new Date();
            DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss", Locale.ENGLISH);
            try {
                itemDate = df.parse("Sat Dec 03 20:30:33");
//"Sat Dec 03 20:30:33 GMT+00:00 2016" works too.
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(itemDate);
        }

问题是关于Dec'月。您的设备中有另一个区域设置

答案 1 :(得分:0)

Sat 12 03 20:30:33 GMT + 00:00 2016

是一个字符串,其中包含一些与语言环境相关的元素,如“Sat”和“Dec”

因此你必须这样做:

DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss", Locale.ENGLISH);

然后确保您使用的模式与您要解析的字符串匹配...

在你的例子中我们看到:“EEE MMM dd HH:mm:ss” 但是要解析的字符串例如是年...因此您需要解析该信息以及在正确的位置添加年份组件 yyyy