gpt4 book ai didi

python - 从文本文件解析日期/时间时如何考虑夏令时?

转载 作者:太空宇宙 更新时间:2023-11-04 10:18:43 27 4
gpt4 key购买 nike

我已经编写了一个 python 脚本来将原始文本解析为可用数据,但最近的 DST 时间更改已将事情搞砸了。这是一些文本,特别是导致问题的部分:

11/1/2015   1:00:37 AM  3.14    0.00    4.18  
11/1/2015 1:30:37 AM 3.14 0.00 4.18
11/1/2015 1:00:39 AM 3.14 0.00 4.18
11/1/2015 1:30:39 AM 3.14 0.00 4.18
11/1/2015 2:00:40 AM 3.14 0.00 4.18

文本文件会定期更新并同步到保管箱。在脚本的第一次运行中,它使用与文件每一行对应的文档填充一个 mongodb 集合。每个文档都包含一个日期时间(为了在 mongo shell 中可读)、一个时间戳和与文件中的数据相对应的其他字段。

填充集合后,每 15 秒运行一次循环,将文件中的行数与集合中的文档数进行比较。如果文件包含更多行,则脚本会读取文件中的最低行并将其解析为可以添加到数据库的文档。它将这个潜在的新文档的时间戳与集合中最新文档的时间戳进行比较

if(newdataDate > latestDate):
db.LiqLog.insert(newdata)
elif(newdataDate < latestDate):
#Throw error, end script

我如何让我的脚本帐户记录由于 DST 导致的日志文件中的更改?我能想到的唯一方法是对 future 的 DST 时间更改进行硬编码并解决这些问题。这个脚本可能会在我们的实验室服务器上连续运行很多年,并且由于我无法知道它需要运行多长时间,所以最好让它能够处理 DST 而无需硬编码日期。

编辑:我找到了 online DST 总是从 3 月的第二个星期日开始,到 11 月的第二个星期日结束。我将尝试解决这个问题,一旦取得进展,我将再次编辑这篇文章。感谢大家迄今为止的帮助。

最佳答案

最好的办法是将所有日期和时间存储为 UTC,即 GMT,并将它们与其他 UTC 时间进行比较。如果你使用本地时间,你还应该存储一个时间偏移量或标志来说明是否发生了夏令时切换,因为一些本地时间是模棱两可的,例如早上 1 点 30 分,时钟在秋天倒退,但它变得非常困惑。

GMT 时间操作示例:

import time, calendar
seconds = int(time.time())
print(seconds)
gmtstruct = time.gmtime(seconds)
timeformat = "%Y-%m-%d %H:%M:%S"
timestr = time.strftime(timeformat, gmtstruct)
print(timestr + " +0000")
readstruct = time.strptime(timestr, timeformat)
readseconds = calendar.timegm(readstruct)
print(readseconds)

输出:

1447279828
2015-11-11 22:10:28 +0000
1447279828

我在本地时间下午 5:10 运行此程序,也就是美国东部时间,因此 GMT 时间的格式为 22:10。我添加了“+0000”以指示该文件的 future 用户的时区是 GMT。

关于python - 从文本文件解析日期/时间时如何考虑夏令时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33660329/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com