如何在Django中获取本地日期与时间?已尝试方案存在异常
在Django中获取本地日期与时间的正确姿势
嘿,我明白你遇到的问题了!你之所以用timezone.localtime(timezone.date())和timezone.localtime(timezone.time())会报错,是因为timezone.date()和timezone.time()返回的是date对象和time对象,而localtime()函数只接受datetime类型的参数来做时区转换,所以自然会出错啦。
想要得到和原生datetime格式一致的结果,其实只需要调整一下步骤:先获取本地时区的完整datetime对象,再从中提取日期和时间就可以了,和你用原生datetime.datetime.now()后调用.date()/.time()的逻辑完全一致。
正确的代码示例
from django.utils import timezone # 先获取本地时区的datetime对象(这一步你已经写对啦) local_now = timezone.localtime(timezone.now()) # 或者更简洁的写法:timezone.localtime() 默认会用 timezone.now() 作为参数 # local_now = timezone.localtime() # 获取本地日期,和原生datetime.datetime.now().date()结果一致 local_date = local_now.date() # 打印出来会是类似 '2020-04-28' 的格式,类型是 datetime.date # 获取本地时间,和原生datetime.datetime.now().time()结果一致 local_time = local_now.time() # 打印出来会是类似 '17:57:34.120383' 的格式,类型是 datetime.time
更快捷的方式
Django其实还提供了直接获取本地日期的快捷方法,不用先拿到datetime对象:
# 直接获取本地时区的日期 local_date = timezone.localdate() # 直接获取本地时区的时间的话,还是需要先转成datetime再提取 local_time = timezone.localtime().time()
这样处理后,得到的结果就和你用原生datetime模块获取的完全一致啦!
内容的提问来源于stack exchange,提问作者Maddie Graham
相关产品推荐
相关产品推荐

