用于字符串的Java简单日期格式化程序

时间:2015-11-20 17:38:03

标签: java android simpledateformat

有人能指出这里似乎有什么问题吗?

try {
    Date date = new SimpleDateFormat("Mon, 02 Nov 2015 15:13:00 EET").parse("EEE, dd MMM yyyy hh:mm:ss z");
} catch (ParseException e) {
    e.printStackTrace();
}

和stacktrace:

java.text.ParseException: Unparseable date: "Mon, 02 Nov 2015 15:13:00 EET" (at offset 26)

我怀疑使用我所使用的语言环境,但我无法确定。似乎" z"因为时区不起作用。

编辑: 对不起,之前的异常很有趣,我改了但是忘了在这里更新。

try {
            Date date = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z", Locale.US).parse("Mon, 02 Nov 2015 15:13:00 EET");
        } catch (ParseException e) {
            e.printStackTrace();
        }

3 个答案:

答案 0 :(得分:1)

在查看SimpleDateFormat的javadoc后,您正在使用" hh"小时,假设是12小时的时间。使用HH 24小时。你的例子是15小时。

答案 1 :(得分:0)

我认为你在这里错过了'z'。

尝试:

Date date = new SimpleDateFormat("Mon, 02 Nov 2015 15:13:00 EET").
        parse("EEE, dd MMM yyyy hh:mm:ss zzz")

由于您的时区有三个字符。

答案 2 :(得分:0)

这样的异常可能来自使用错误的Locale解析日期。例如,这个日期格式化程序:

SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z", Locale.US);

将成功解析示例日期:

Date date = df.parse("Mon, 02 Nov 2015 15:13:00 EET");

但是以下内容将为您提供例外

SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z", Locale.FRENCH);

我希望Android中的Locale可以根据用户设置的语言进行选择。