“星期五,2014年9月12日05:00:23 GMT”,SimpleDateFormat出了什么问题?
SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.parse(dateString);
format: "EEE, dd MMM yyyy HH:mm:ss 'GMT'"
dateString:"Fri, 12 Sep 2014 05:00:23 GMT"
怎么了?
答案 0 :(得分:2)
假设您的问题是日期错误,时区的SimpleDateFormat
转换说明符为z
而不是'GMT'
(尽管您可以使用Z
和{其他两个变体分别为{1}},分别为RFC822和ISO8601。
使用您的说明符,我得到本地时间凌晨5点。如果我在我的代码中使用正确的说明符,它可以正常工作:
X
该计划的输出(对于西澳大利亚州珀斯,即UTC + 8)正如预期的那样:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main (String[] args) {
String format = "EEE, dd MMM yyyy HH:mm:ss z";
String date = "Fri, 12 Sep 2014 05:00:23 GMT";
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
Date dt = sdf.parse(date);
System.out.println(dt);
} catch (Exception e) {
e.printStackTrace();
}
}
}
有关详细信息,请参阅SimpleDateFormat
online documentation。
如果仍有问题,请尝试从格式和日期字符串中删除单个项目,直到它开始工作。一旦您建立了有问题的格式说明符,就会更容易追踪。
答案 1 :(得分:0)
在您的模式中使用“z”因为GMT不仅仅是文字,而是必须被解释为时区偏移UTC + 00:00。并将语言环境设置为英语,因为您有英文缩写的星期和月份:
String format = "EEE, dd MMM yyyy HH:mm:ss z";
String date = "Fri, 12 Sep 2014 05:00:23 GMT";
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.ENGLISH);