Python 如何将数据库日期转换为带时区的字符串
我有下面一行代码Python 如何将数据库日期转换为带时区的字符串,python,django,timezone,Python,Django,Timezone,我有下面一行代码 datetime.datetime.strftime(expire_date, "%m/%d/%Y %H:%M %p %Z") 但它不会输出带有时区的日期 我怎样才能改变它,使它这样做 比如说: 对于原始对象,将用空字符串替换%z和%z格式代码 对于感知对象:…如果tzname()返回None,%Z将替换为空字符串。否则,%Z将替换为返回值,返回值必须是字符串 (本模块简介中描述了“天真”和“意识”之间的区别。) 因此,要么你有一个朴素的对象(一个根本没有时区的对象),要么你
datetime.datetime.strftime(expire_date, "%m/%d/%Y %H:%M %p %Z")
但它不会输出带有时区的日期
我怎样才能改变它,使它这样做 比如说:
对于原始对象,将用空字符串替换%z和%z格式代码
对于感知对象:…如果tzname()
返回None
,%Z
将替换为空字符串。否则,%Z
将替换为返回值,返回值必须是字符串
(本模块简介中描述了“天真”和“意识”之间的区别。)
因此,要么你有一个朴素的对象(一个根本没有时区的对象),要么你有一个不知道如何命名时区的感知对象,要么你有一个认为自己知道如何命名时区但返回空字符串的感知对象
尝试记录expire\u date.tzname()
,expire\u date.tzinfo
,以及expire\u date.tzinfo.utcoffset(expire\u date)
,然后查看结果。(文档的这一部分告诉您如何解释这一点。)
那么,你如何修复它呢?好吧,这取决于你到底在处理什么,但最有可能的是你需要调用或替换,给它注入一个时区
或者,更简单地说,只需分别传递UTC日期和时区(或者在适当的情况下将它们塞进元组中),然后编写一个包装器,通过连接datetime字符串和时区字符串将这对字符串格式化为字符串。附带说明:通过调用类上的unbound方法并将对象作为第一个参数传递来调用方法是非常奇怪的。只需编写expire\u date.strftime(“%m/%d/%Y%H:%m%p%Z”)
,就像所有示例一样。