到目前为止无法解析字符串

Can't parse string to date

服务器 return 我的日期格式 "Sat, 10 Jan 2015 07:24:00 +0100"。

到目前为止,我尝试解析这个字符串,但没有成功。

这是我的解析代码:

    SimpleDateFormat format = new SimpleDateFormat("dd.Mm.yyyy");
        try {
            Date date = format.parse("Sat, 10 Jan 2015 07:24:00 +0100");
            tvDate.setText(date.toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }

如果您真的关心时区,您需要做的是将 SimpleDateFormat 实例的字符串格式更改为表示返回的日期字符串的格式。

这是一个例子:

public static Date stringToDate(String dateString) throws ParseException {
    final SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
    return format.parse(dateString);

}

public static void main(final String[] args) throws ParseException {
    Date example = stringToDate(
            "Sat, 10 Jan 2015 07:24:00 +0100");
}

您可能还需要考虑 SimpleDateFormat 不是线程安全的,如果使用不当可能会导致意外行为。这是一个非常有用的解释:

http://javarevisited.blogspot.com/2012/03/simpledateformat-in-java-is-not-thread.html

这是您要使用的格式:

SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");

为什么?

The documentation goes over the symbols,但大部分...

  • EEE 匹配 shorthand 天
  • dd 匹配两位数的日期(即 01 到 31)
  • MMM 匹配三个字母的月份(所以 Jan)
  • yyyy 匹配四个字母的年份
  • HH:mm:ss Z 是 shorthand(足够)用于完整的 24 小时制,Z 代表与 GMT 的偏移量。

如果您不关心 +0100,您应该使用这样的格式:

SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss");

E - 是星期几 "Sat"

d - 月中的第几天

M - 是月

y - 是年份

h - 是小时

m - 是分钟

s - 是第二个