java.text.ParseException : Unparseable date: "06-DEC-11"

标签 java scala parsing

我正在遵循 Pascal Bugnion 的《Scala for Data Science》一书中的代码。 第一类代表交易

case class Transaction(
id:Option[Int], // unique identifier
candidate:String, // candidate receiving the donation
contributor:String, // name of the contributor
contributorState:String, // contributor state
contributorOccupation:Option[String], // contributor job
amount:Long, // amount in cents
date:Date // date of the donation
)

defined class Transaction

然后我在 FEData 单例对象的帮助下加载了数据

scala> val ohioData = FECData.loadOhio
ohioData: FECData = FECData@7e83a375

FECData 对象具有事务属性

scala> val ohioTransactions = ohioData.transactions
ohioTransactions: Iterator[Transaction] = non-empty iterator

当我尝试打印前 5 笔交易时

scala> ohioTransactions.take(5).foreach(println)
java.text.ParseException: Unparseable date: "06-DEC-11"
  at java.text.DateFormat.parse(DateFormat.java:366)
  at FECData$$anonfun$1.apply(FECData.scala:26)
  at FECData$$anonfun$1.apply(FECData.scala:16)
  at scala.collection.Iterator$$anon$11.next(Iterator.scala:370)

让我们看一下 csv 文件的前 5 行 候选人 ID、候选人、贡献者姓名、贡献者状态、贡献者职业、金额、日期

P80000748,"Paul, Ron","BROWN, TODD W MR.",OH,ENGINEER,50.0,06-DEC-11
P80000748,"Paul, Ron","DIEHL, MARGO SONJA",OH,RETIRED,25.0,06-DEC-11
P80000748,"Paul, Ron","KIRCHMEYER, BENJAMIN",OH,COMPUTER PROGRAMMER,201.2,06-DEC-11
P80003338,"Obama, Barack","KEYES, STEPHEN",OH,HR EXECUTIVE / ATTORNEY,100.0,30-SEP-11
P80003338,"Obama, Barack","MURPHY, MIKE W",OH,MANAGER,50.0,26-SEP-11

为什么?

最佳答案

好吧,问题是在FECData中定义了一个dateParsernew SimpleDateFormat("DD-MMM-YY")

根据https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html#SimpleDateFormat(java.lang.String) ,它使用给定模式和默认区域设置的默认日期格式符号构造一个SimpleDateFormat

问题是您的(JVM 的)默认语言环境不是 Locale.ENGLISH,因此 "06-DEC-11"的 DEC 部分 未正确解析。

您只需修补 FECData:将 private val dateParser = new SimpleDateFormat("DD-MMM-YY") 替换为 private val dateParser = new SimpleDateFormat("DD-MMM-YY", java.util.Locale.ENGLISH).

引用号。对于区域设置 https://docs.oracle.com/javase/7/docs/api/java/util/Locale.html

关于java.text.ParseException : Unparseable date: "06-DEC-11",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42373527/

相关文章:

java - 在Gradle中运行测试的子集

scala - 无法在intellij IDE的Scala中找到或加载主类

java - 使用 JavaScript 解析算术表达式(通过 ScriptEngine)

java - Vaadin:将自定义 javascript 添加到引导页面

java - 选择使用 XPath 并考虑命名空间和前缀

java - 将 JSF 项目从 Netbeans 部署到 Tomcat 的问题

java - 管理流中的 null 不匹配

java - 抽象方法和可变参数注解

java - 萨克斯解析器 : Ignoring HTML

Ruby:将嵌套数组的字符串表示形式解析为数组?