也许我只是错过了显而易见的事,但我无法让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"
答案 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" );