gpt4 book ai didi

python - 在 mysql 数据库中存储 python time.struct_time 的最佳方法

转载 作者:行者123 更新时间:2023-11-29 02:36:37 26 4
gpt4 key购买 nike

我正在使用 python 的 feedparser 模块来解析 RSS 提要。解析后,feedparser 以 python 9 元组时间格式 (time.struct_time) 返回日期。

我想将这些值存储在我的 mysql 数据库中,以便稍后检查 Last-Modified headers的饲料。重要的是,如果时间元组被转换,当转换回来时它们保持不变,所以我可以稍后使用它们进行比较。

我试过将时间元组转换为日期时间然后再转换回来,但是转换回来时不一样:

dt = datetime.fromtimestamp(time.mktime(struct))
time_tuple = dt.timetuple()

你认为这样做的方法是什么?

最佳答案

我认为您的方法未保留时间元组的原因是 is_dst 值已更改。 time.mktime 尊重struct 中的is_dst,但是dt.timetuple 改变了is_dst到-1。

避免此错误的一种方法是将时间元组解释为表示 UTC 时间。这可能不是严格正确的,但它可能足以满足您的目的。

In [1]: import datetime as dt
In [2]: import time
In [3]: import calendar

In [17]: time_tuple=(1970, 1, 1, 0, 0, 0, 3, 1, 1)

In [18]: timestamp=calendar.timegm(time_tuple)
In [19]: timestamp
Out[19]: 0

In [20]: date=dt.datetime.utcfromtimestamp(timestamp)
In [21]: date
Out[21]: datetime.datetime(1970, 1, 1, 0, 0)

In [22]: tuple(date.timetuple())
Out[22]: (1970, 1, 1, 0, 0, 0, 3, 1, -1)

附言。这是一个示例,显示您发布的方法可能无法保留时间元组。假设远程服务器位于 is_dst = 1 的语言环境中,而在您的语言环境中 is_dst = 0:

In [11]: time_tuple=(1970, 1, 1, 0, 0, 0, 3, 1, 1)

In [12]: timestamp=time.mktime(time_tuple)
In [13]: timestamp
Out[13]: 14400.0

In [14]: date=dt.datetime.fromtimestamp(timestamp)
In [15]: date
Out[15]: datetime.datetime(1969, 12, 31, 23, 0)

In [16]: tuple(date.timetuple())
Out[16]: (1969, 12, 31, 23, 0, 0, 2, 365, -1)

关于python - 在 mysql 数据库中存储 python time.struct_time 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180280/

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