如何从 csv 保存的间隔固定的时间序列中找出缺失项

例题描述和简单分析

有 csv 文件 csv.csv,数据如下所示:

2021-02-02 00:00:00

2021-02-02 01:00:00

2021-02-02 02:00:00

2021-02-02 03:00:00

2021-02-02 04:00:00

2021-02-02 05:00:00

2021-02-02 06:00:00

2021-02-02 07:00:00

2021-02-02 08:00:00

2021-02-02 10:00:00

...

从 2021-02-02 00:00:00 至 2021-03-03 23:00:00,已排序,以 1 小时为间隔,有 30 天的数据,理论上每天 24 条,但实际上有遗漏,需要找出遗漏的日期时间,结果如下:

2021-02-02 09:00:00

2021-02-02 14:00:00

2021-02-03 06:00:00

2021-02-03 09:00:00

2021-02-03 11:00:00

2021-02-03 17:00:00

2021-02-03 18:00:00

2021-02-03 19:00:00

2021-02-03 20:00:00

2021-02-03 23:00:00

...

解法及简要说明

在集算器中编写脚本 p1.dfx,如下所示:


A

1

=periods@s("2021-02-02   00:00:00","2021-03-03 23:00:00",3600)

2

=file("csv.csv").import@ci()

3

=A1\A2

简要说明:

A1  列出从 2021-02-02 00:00:00 至 2021-03-03 23:00:00 间隔为 1 小时的所有日期时间

A2  读取 csv 文件中的日期时间数据

A3  计算 A1 与 A2 的差集

JAVA 集成这段代码的方法可参考:《Java 如何调用 SPL 脚本》

问答搜集

https://stackoverflow.com/questions/63265424/java-loop-trough-a-csv-file-checking-for-missing-meter-readings-based-on-the-t