服务器以格式“星期六,2015年1月10日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();
}
答案 0 :(得分:4)
这是您要使用的格式:
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
为什么?
The documentation goes over the symbols,但在大多数情况下......
EEE
与简写日相匹配dd
匹配两位数的日期(因此01到31)MMM
匹配一个三个字母的月份(1月份)yyyy
匹配四个字母的年份HH:mm:ss Z
是完整的24小时制的简写(足够),Z
表示与GMT的偏移。答案 1 :(得分:1)
如果你不关心+0100:
,你应该使用这样的格式SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss");
< - > E - 是星期几,如“星期六”
d - 每月的某一天
M - 是月份
y - 是年份
h - 是小时
m - 是分钟
s - 是第二个
答案 2 :(得分:-1)
如果您真的关心时区,您需要做的是将SimpleDateFormat实例的String格式更改为表示要返回的日期字符串的内容。
以下是一个例子:
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