首页 > 解决方案 > Python 和 Django 时区格式 Postgres

问题描述

我在这里有一行代码可以在我的 Django 和 Python 开发服务器上使用 SQL Lite,但是当我上传我的代码时,它给了我一个关于我的时区的错误。这是我的代码。Postgres 不喜欢末尾的 %z ,但是 SQL Lite 很好。我该怎么做才能在我的 Heroku Postgres 生产环境中解决这个问题?谢谢

new_event.start = datetime.strptime(str(obj.start_date) ,'%Y-%m-%d %H:%M:%S%z') 

错误消息:时间数据 '2020-10-08 12:17:51-04:00' 与格式 '%Y-%m-%d %H:%M:%S%z' 不匹配

标签: pythondjangopostgresql

解决方案


假设您有充分的理由回到起点:

dt                                                                                                                                                                        
datetime.datetime(2020, 10, 8, 9, 33, 37, 216144, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=-420, name=None))

datetime.strftime(dt, '%Y-%m-%d %H:%M:%S%z')                                                                                                                              
'2020-10-08 09:33:37-0700'

dt_2 = datetime.strptime(datetime.strftime(dt, '%Y-%m-%d %H:%M:%S%z'), '%Y-%m-%d %H:%M:%S%z') 

dt_2
datetime.datetime(2020, 10, 8, 9, 33, 37, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=61200)))

这使得从 datetime 对象返回的字符串被格式化为不带冒号的时区偏移量。这意味着strptime在 Python < 3.7 中可以处理它。


推荐阅读