无法减去天真偏移和可感知偏移的日期时间


问题内容

timestamptz在PostgreSQL中有一个时区感知字段。当我从表中提取数据时,我想现在减去时间,以便确定时间。

我遇到的问题是,无论是datetime.datetime.now()datetime.datetime.utcnow()似乎回到时区不知道时间戳,这导致我得到这个错误:

TypeError: can't subtract offset-naive and offset-aware datetimes

有没有一种方法可以避免这种情况(最好不要使用第三方模块)。

编辑:感谢您的建议,但是尝试调整时区似乎给了我错误..因此,我只打算在PG中使用不了解时区的时间戳,并始终使用以下命令进行插入:

NOW() AT TIME ZONE 'UTC'

这样,默认情况下,我所有的时间戳都是UTC(即使这样做比较烦人)。


问题答案:

您是否尝试删除时区意识?

来自http://pytz.sourceforge.net/

naive = dt.replace(tzinfo=None)

可能还必须添加时区转换。

编辑:请注意这个答案的年龄。下面是一个涉及添加时区信息而不是在python
3中删除它的答案。https://stackoverflow.com/a/25662061/93380