2

我有一个大的 ARFF 文件,其中的数据看起来像这样:

555,"2011-03-13 01:50:48.000",0
540,"2011-03-13 02:10:19.000",0

为了帮助解析它,我声明了第二个属性,如下所示:

@attribute RecordedOn date "yyyy-MM-dd HH:mm:ss.SSS"

使用 Java 的 SimpleDateFormat 的解析器在第一行(以及与其非常相似的几百万行)上运行良好,但在几行上就卡住了,就像第二行一样。我注意到它只会阻塞小时为“02”的一行 - 事实上,如果我将第二行更改为540,"2011-03-13 01:10:19.000",0. 为了增加谜团,02无论如何,一些带有 a 的行都可以很好地解析。像:1,"2006-12-16 02:58:51.000",111

那么有人知道发生了什么吗?有什么建议吗?提前致谢。

4

2 回答 2

5

您几乎可以肯定将日期解释为遵守夏令时的时区中的当地时间。2011 年 3 月 13 日是美国夏令时的开始;这意味着时钟从 01:59:59 提前到 03:00:00,跳过整个 2 点钟。“2011-03-13 02:10:19.000”当地时间从未出现在例如纽约市。

于 2011-05-20T19:28:33.640 回答
0

我对某些数据也有同样的问题,我可以通过将系统时区更改为 America/Phoenix 来使用它(因为他们不使用 DST)。我后来发现的其他解决方案是在运行 WEKA 时更改 JVM 的时区(https://www.baeldung.com/java-jvm-time-zone

于 2021-11-10T23:25:58.550 回答