Parsing Date Formats in Java

2020-05-09 12:36发布

I'm trying to convert Dates into Unix Timestamps in Java. Examples for my dates are: "Fri Jun 05 15:53:07 PDT 2009"

My code is:

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;

The given error is:

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

What's the right Pattern?

标签: java parsing
2条回答
疯言疯语
2楼-- · 2020-05-09 13:02

You need to set Locale, Some cases if you are not set the locale you may face this kind of issues.

Eg:

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

From Java doc.

SimpleDateFormat also supports localized date and time pattern strings. In these strings, the pattern letters described above may be replaced with other, locale dependent, pattern letters. SimpleDateFormat does not deal with the localization of text other than the pattern letters; that's up to the client of the class.

查看更多
霸刀☆藐视天下
3楼-- · 2020-05-09 13:03

This is probably a Locale issue - Fri is friday in English but not in French or German for example:

DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
查看更多
登录 后发表回答