存储python的最佳方法时间结构时间在mysql数据库中

2024-09-27 23:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我尝试过将时间元组转换为datetime,然后再转换回原来的值,但当转换回原来的值时就不一样了:

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

你认为有什么方法可以做到这一点?在


Tags: 模块数据库datetimetime格式时间mysqldt
2条回答

将日期时间与时区一起存储在数据库中,格式为UTC。如果需要,从数据库中提取时转换回本地时间。在

我相信您的方法没有保存时间元组的原因是is_dst值被更改了。time.mktime尊重struct中的is_dst,但是dt.timetupleis_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)

下面是一个示例,说明您发布的方法可能无法保存时间元组。假设远程服务器所在的区域设置为_dst=1,而您所在的区域设置中为\u dst=0:

^{pr2}$

相关问题 更多 >

    热门问题