Java日期解析
问题描述:
我有一个愚蠢的问题java.util.Date
。Java日期解析
我有这行代码,但我不明白为什么这个日期是用这种格式无法解析的。
public class TestTime {
public static void main(String[] args) {
final String DATE_FORMAT = "EEE MMM dd HH:mm:ss zzz yyyy";
String date = "Sat Dec 31 10:00:00 CET 2011";
SimpleDateFormat dFormat = new SimpleDateFormat(DATE_FORMAT);
Date lDate = null;
try {
lDate = dFormat.parse(date);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
答
如果您的系统使用的区域设置不是英语,你需要使用此构造:
SimpleDateFormat(DATE_FORMAT,Locale.ENGLISH);
如果这不是问题,你应该格式化使用相同格式化程序的日期并将输出与输入字符串进行比较。
答
似乎是一个语言环境相关的问题。
如果我设置法语语言环境,则该模式不起作用。如果我在SimpleDateFormat构造函数中将Locale设置为US,它确实可行。
SimpleDateFormat dFormat = new SimpleDateFormat(DATE_FORMAT,Locale.US);
+0
谢谢Olivier,它终于是一个Locale问题。 – migueloop
检查您的默认语言环境,是否en_US等等或某些'隐晦'? – home
显示异常跟踪 – korifey
请小心使用'SimpleDateFormat'。它不是线程安全的。 http://www.codefutures.com/weblog/andygrove/2007/10/simpledateformat-and-thread-safety.html – Gray