用Java解析日期格式

时间:2014-10-14 08:03:51

标签: java parsing

我试图将日期转换为Java中的Unix时间戳。我日期的例子是:" Fri Jun 05 15:53:07 PDT 2009"

我的代码是:

DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
Date date = dateFormat.parse(dateString );
long unixTime = (long) date.getTime()/1000;
System.out.println("Unix Time: " + unixTime );
double unixFloat = unixTime;

给定的错误是:

 Exception in thread "main" java.text.ParseException: Unparseable date: "Fri Jun 05 15:53:07 PDT 2009"

什么是正确的模式?

2 个答案:

答案 0 :(得分:2)

您需要设置Locale,有些情况下,如果您未设置可能会遇到此类问题的区域设置。

例如:

DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"
                                                                     ,Locale.US);

来自Java doc

  

SimpleDateFormat还支持本地化的日期和时间模式   字符串。在这些字符串中,上述图案字母可以是   替换为其他依赖于语言环境的模式字母。   SimpleDateFormat不处理其他文本的本地化   比模式字母;这取决于班上的客户。

答案 1 :(得分:1)

这可能是一个Locale问题 - Fri是英语周五,但不是法语或德语,例如:

DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);