Java SimpleDatetime解析

时间:2014-09-27 16:11:55

标签: java parsing date simpledateformat

也许我只是错过了显而易见的事,但我无法让SimpleDateTime parse()方法工作:

我想解析June 19, 2011之类的日期。因此,根据文档:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

根据我的需要它应该是:

  • M:一年一个月。如果模式字母的数量为3或更多,则将月份解释为文本; - > MMM
  • d:每月一次。对于解析,除非需要分隔两个相邻的字段,否则忽略模式字母的数量 - > d
  • y:年。对于解析,如果模式字母的数量大于2,则无论数字位数如何,都按字面解释年份。 - > yyyy

但是

SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy");
Date d = sdf.parse("June 19, 2011");

我将永远得到java.text.ParseException: Unparseable date: "June 19, 2011"

我在哪里想错了? :)

2 个答案:

答案 0 :(得分:3)

我假设您的Locale具有一定的德国价值,因为您似乎在德国。 June一个月内不会将其解析为德语单词。将Locale设置为英文值。

SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH);

答案 1 :(得分:0)

约达时间

这是一个类似于the correct answer但使用Joda-Time库的示例。

Joda-Time和java.time包远远优于旧的java.util.Date和Java捆绑的.Calendar类。其中一个优点是类LocalDate,用于表示没有时间或时区的仅限日期值。

DateTimeFormatter formatter = DateTimeFormat.forPattern( "MMM, d, YYYY" ).withLocale( Locale.ENGLISH );
LocalDate localDate = formatter.parseLocalDate( "June 19, 2011" );