问题描述
在用户登录后,我将会话变量设置为 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
解决方法
对我来说,我将使用 .strftime
帮助格式化日期时间,而 %Z
用于显示时区。
您可以看到 are using AspNetCoreModuleV2
(and not AspNetCoreModule
) 以帮助您格式化时间。我将使用此代码替换您原来的代码:
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'>
,
当我需要在另一个函数中使用时间时,我不得不重新添加 timezone('utc')
。
def diff_min(t):
utc = timezone('utc')
t = utc.localize(t)