无法使用java / scala中的SimpleDateFormat解析Date

时间:2014-11-01 00:05:35

标签: scala simpledateformat java.util.date

我有这种格式的日期:

"Fri Oct 31 15:07:24 2014" 

我尝试解析它,因为我解析了很多其他日期,直到现在。 我发现他的格式就是这个(咨询Java文档(http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html)):

"EEE MMM dd HH:mm:ss yyyy"

我尝试使用scala REPL运行此命令:

scala> import java.text.SimpleDateFormat
import java.text.SimpleDateFormat

scala> import java.util.Date
import java.util.Date

scala> val sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy")
sdf: java.text.SimpleDateFormat = java.text.SimpleDateFormat@2219f5ee

scala> sdf.parse("Fri Oct 31 15:07:24 2014")
java.text.ParseException: Unparseable date: "Fri Oct 31 15:07:24 2014"
  at java.text.DateFormat.parse(DateFormat.java:366)
  ... 33 elided

但是你可以看到我得到一个ParseException。

我尝试删除Date(和模式)的第一部分,如下所示:

"dd HH:mm:ss yyyy" -> "31 15:07:24 2014"

一切都很好,但是当我尝试添加EEE或MMM时,我得到了ParseException。

我也尝试过使用EEE的java文档中显示的模式,但它在我的机器上也失败了。

我有Java 8和scala 2.11.1

提前谢谢。

1 个答案:

答案 0 :(得分:3)

问题是Locale,默认情况下SimpleDateFormat采用正在运行的机器的默认Locale,为SimpleDateFormat设置一个不同的Locale(本例中的“en”语言环境),你需要以这种方式实例化它:

new SimpleDateFormat(format,java.util.Locale.forLanguageTag("en"))