Django以“2015-10-31 17:00:00+03”(时间的明确形式)的格式将日期时间上传到DB。
PostgreSQL以UTC时间保存时间。
在pgAdmin中,我看到的日期时间为“2015-10-31 17:00:00+03”,而不是UTC时间。
是否可以直接从数据库获取“2015-10-31 17:00:00+03”,而不是“2015-10-31 14:00:00+00”?据我了解,如果时间是明确的,则DB中的值会包含TZ信息,但如何提取此TZ呢?
例如,我想上传新的日期时间,但在写入数据库之前,我想将这些日期时间与已存在于数据库中的值进行比较。因此,一个新的日期时间部分的格式为:
“2015-10-31 17:00:00+03”,但是从数据库中获取的值是UTC时间,即
“2015-10-31 14:00:00+00”,而应该也是17:00:00+03!
如何从DB中获取非UTC时间,而是+3时区的时间(以本例为例)?
test = Shows.objects.get(name = 'Test')
test.date_time # I get UTC, but I need to get it as TZ +3
提示:像这样硬编码
from pytz import timezone
right_time = utc_from_db.astimezone(timezone('Europe/Berlin'))
这是不可能的。必须从最初填充值的数据库中获取准确的时区,因为所有日期时间可能具有不同的时区。