java SimpleDateFormat.Parse

时间:2012-05-25 15:06:35

标签: java datetime simpledateformat

我编写了一个通用的CSV文件阅读器,我正在尝试用它来阅读一些预先生成的CSV数据文件。这些文件包含以下格式的价格信息和时间戳

lTid,cDealable,NAME,TIMESTAMP,BID,ASK  <--- The header

1705852073,D,EUR/USD,2011-10-02 17:00:16.123000000,1.334400,1.334600

在我的代码中,我假设价格正如您所料,数字,文本是字符串,日期是Java日期(它有点复杂,但你明白了)。对于日期,代码允许您传递解析模板。到目前为止,这已经工作正常,但我对这些文件有什么用处(我无法控制格式,它们非常大)。正如您将看到日期的格式

2011-10-02 17:00:16.123000000

六个尾随零始终为零(即文件时间精度降至毫秒)

理想情况下,我可以使用模式“yyyy-MM-dd HH:mm:ss.SSS”,但遗憾的是,SimpleDateFormat中的解析逻辑将“.123000000”解释为123,000,000毫秒而不是123毫秒。

显然,如果这不是通用读者,我可以简单地截断日期字符串,但我没有这个选择。有没有办法让parse语句只使用ms数字而忽略尾随零?

1 个答案:

答案 0 :(得分:3)

重复Custom date format cannot be parsed. (Java)

结论是:SimpleDateFormat不支持微秒,因此必须编写自定义解析器。