如何将数据库日期转换为带时区的字符串



我有以下代码行

datetime.datetime.strftime(expire_date, "%m/%d/%Y %H:%M %p %Z")

但是没有输出带有时区的日期。

我怎样才能改变它呢?

正如文档所说:

对于朴素型对象,%z和%z格式代码将被空字符串替换。

对于感知对象:…如果tzname()返回None,则将%Z替换为空字符串。

返回值必须为字符串,否则将%Z替换为返回值。

("naive"one_answers";aware"在模块的介绍中进行了描述)

所以,要么你有一个朴素对象(根本没有时区),要么一个不知道如何命名其时区的感知对象,或者一个认为它知道如何命名其时区的感知对象,但返回一个空字符串。

尝试记录expire_date.tzname()expire_date.tzinfoexpire_date.tzinfo.utcoffset(expire_date),看看会得到什么。(文档中的可用类型一节告诉您如何解释这一点。)

那么,你怎么解决它呢?嗯,这取决于你在处理什么,但最有可能的是你需要调用astimezonereplace来给它注入一个时区。

或者,更简单地说,只是分别传递UTC日期和时区(或者在适当的时候将它们塞在一个tuple中),并编写一个包装器,通过连接datetime字符串和timezone字符串将它们对格式化为字符串。

相关内容

  • 没有找到相关文章

最新更新