时区在 python 烧瓶中被删除

Posted

技术标签:

【中文标题】时区在 python 烧瓶中被删除【英文标题】:Timezone getting removed in python flask 【发布时间】:2021-08-28 20:18:49 【问题描述】:

用户登录后,我将会话变量设置为使用 utc 的时间。但时区被剥离。

import datetime
from pytz import timezone
utc = timezone('utc')
session['login_time'] = datetime.datetime.now(utc)

当我在分配后打印时区2021-06-11 23:56:00.161971+00:00。并且调用了一个装饰器函数。当我打印 session['login_time'] 时,时区被删除。 2021-06-11 23:56:00

【问题讨论】:

【参考方案1】:

当我需要在另一个函数中使用时间时,我不得不重新添加timezone('utc')

def diff_min(t):
    utc = timezone('utc')
    t = utc.localize(t)

【讨论】:

【参考方案2】:

对我来说,我将使用.strftime 帮助格式化日期时间,%Z 用于显示时区。

您可以查看strftime document 来帮助您格式化时间。我将使用此代码替换您原来的代码:

session['login_time'] = datetime.datetime.now(utc).strftime('"%Y-%m-%d %H:%M:%S%Z"')
login_time = datetime.datetime.strptime(session['login_time'],"%Y-%m-%d %H:%M:%S%Z" )
utct = utc.localize(login_time)
print(utct)
print(type(utct))

这是输出:

2021-06-12 01:00:23+00:00
<class 'datetime.datetime'>

【讨论】:

这使它成为一个字符串类型。我希望把它作为一个时间对象。我正在对时差进行一些计算。 我刚刚更新了我的答案。你可以看看这个是否适合你。

以上是关于时区在 python 烧瓶中被删除的主要内容,如果未能解决你的问题,请参考以下文章

如何在python烧瓶中获取具有本地时区的模板文件的修改日期

有些类不会在Python Web抓取中被删除

烧瓶/Python:@after_this_request 未被访问

SQLAlchemy 烧瓶删除

无法使用带有两个按钮的烧瓶从 sqlite db 中删除记录

烧瓶应用程序数据库数据会在一段时间后自动删除,这些数据部署在 heroku 中