我一直在试图弄清楚如何生成与我在 InfluxDB 中在测量条目旁边看到的相同的 Unix 纪元时间。
首先让我说我试图在所有测试中使用相同的日期和时间:
April 01, 2017 at 2:00AM CDT
如果我在 InfluxDB 中查看测量值,我会看到时间戳,例如:
1491030000000000000
如果我使用 -precision rfc3339 在 InfluxDB 中查看该测量值,它将显示为:
2017-04-01T07:00:00Z
所以我可以看到 InfluxDB 使用了 UTC
但是,我似乎无法通过 Python 生成相同的时间戳。
例如,我尝试了几种不同的方法:
>>> calendar.timegm(time.strptime('04/01/2017 02:00:00', '%m/%d/%Y %H:%M:%S'))
1491012000
>>> calendar.timegm(time.strptime('04/01/2017 07:00:00', '%m/%d/%Y %H:%M:%S'))
1491030000
>>> t = datetime.datetime(2017,04,01,02,00,00)
>>> print "Epoch Seconds:", time.mktime(t.timetuple())
Epoch Seconds: 1491030000.0
上面的最后两个示例至少似乎给了我相同的数字,但它比 InfluxDB 的要短得多。我假设这与精度有关,我认为 InfluxDB 可以做到纳秒吗?
Python Result: 1491030000
Influx Result: 1491030000000000000
如果我尝试使用 Python 给我的结果将测量值输入 InfluxDB,它最终显示为:
1491030000 = 1970-01-01T00:00:01.49103Z
所以我必须添加额外的九个 0。
我想有几种方法可以在 Python 中以编程方式执行此操作,如果它就像在结果中添加 9 个 0 一样简单。但我想知道为什么我似乎无法在一次转换中生成相同的精度级别。
我有一个包含大量旧时间戳的 CSV 文件,这些时间戳就是“17 年 4 月 1 日 2:00”。每天凌晨 2 点进行测量。
我需要能够将其转换为 InfluxDB 需要“1491030000000000000”以插入所有这些旧测量值的正确格式。
更好地理解发生了什么以及为什么比如何在 Python 中以编程方式解决这个问题更重要。虽然我会很感激能做到这两点的回应;解释问题以及我所看到的内容以及原因以及有关如何使用包含显示为“4/1/17 2:00”的时间戳的列的 CSV 并将它们转换为显示为“1491030000000000000”的时间戳的想法" 在单独的文件中或在第二列中。