Java日期格式

|| 具有String str \“ May 23 2011 12:20:00 \”,想要将其转换为这样的日期:
Date date = (new SimpleDateFormat(\"MMM dd yyyy HH:mm:ss\")).parse(str);
它始终为我提供ParseException Unparsable日期格式:\'May 23 2011 12:20:00 \'。 寻找类似的问题,似乎一切正确。 怎么了?     
已邀请:
如果您的VM的默认语言环境不是英语,则可能需要另外指定语言环境:
Date date = (new SimpleDateFormat(\"MMM dd yyyy HH:mm:ss\", Locale.US)).parse(str);
    
为我工作。     
构造SimpleDateFormat对象时,请尝试指定语言环境。     
tl; dr
LocalDateTime.parse(
    \"May 23 2011 12:20:00\" , 
    DateTimeFormatter.ofPattern( \"MMM d uuuu HH:mm:ss\" , Locale.US )
)
使用java.time Andreas Krueger接受的答案是正确的。您必须指定“ 3”来确定翻译月份名称时使用的人工语言。最好养成在日期时间工作中始终指定语言环境的习惯。 现代方法避免了麻烦的旧日期时间类,而使用了它们的替代品java.time类。
String input = \"May 23 2011 12:20:00\" ;
使用
DateTimeFormatter
类定义格式以匹配输入。 “ 3”确定(a)用于翻译日名,月名等的人类语言,以及(b)决定缩写,大写,标点,分隔符等问题的文化规范。
Locale locale = Locale.US ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( \"MMM d uuuu HH:mm:ss\" , locale );
您的输入没有任何时区或从UTC偏移的指示。因此,我们将其解析为
LocalDateTime
LocalDateTime ldt = LocalDateTime.parse( input , f ) ;
  ldt.toString():2011-05-23T12:20:00 关于java.time java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧的传统日期时间类,例如
java.util.Date
Calendar
SimpleDateFormat
。 现在处于维护模式的Joda-Time项目建议迁移到java.time类。 要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。 在哪里获取java.time类? Java SE 8,Java SE 9和更高版本 内置的 标准Java API的一部分,具有捆绑的实现。 Java 9添加了一些次要功能和修复。 Java SE 6和Java SE 7 java.time的许多功能在ThreeTen-Backport中都被反向移植到Java 6和7。 安卓系统 ThreeTenABP项目专门针对Android改编了ThreeTen-Backport(如上所述)。 请参阅如何使用ThreeTenABP…。 ThreeTen-Extra项目使用其他类扩展了java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。您可能会在这里找到一些有用的类,例如
Interval
YearWeek
YearQuarter
等。     
您使用的工具可能有问题。 看一眼: 为什么在使用SimpleDateFormat格式化日期然后解析日期时出现ParseException?     

要回复问题请先登录注册