gpt4 book ai didi

python - 如何解决 strptime() 引起的 naive datetime RuntimeWarning?

转载 作者:太空宇宙 更新时间:2023-11-03 13:02:47 24 4
gpt4 key购买 nike

我正在尝试编码而不在我的控制台中抛出任何警告。到目前为止,我一直很擅长避免这种情况,直到这个案例为止,这对我来说就像先有鸡还是先有蛋的情况。

from datetime import datetime as dt 

last_contacted = "19/01/2013"
current_tz = timezone.get_current_timezone()
date_time = dt.strptime(last_contacted, get_current_date_input_format(request))
date_time = current_tz.localize(date_time)

第三行抛出这个警告:

RuntimeWarning: DateTimeField received a naive datetime (2013-01-19 00:00:00) while time zone support is active.)

这有点奇怪,因为我需要先将 unicode 转换为日期时间,然后才能在第四行将日期时间对象转换为日期时间感知对象(具有时区支持)。

专家有什么建议吗?

谢谢

更新:

def get_current_date_input_format(request):
if request.LANGUAGE_CODE == 'en-gb':
return formats_en_GB.DATE_INPUT_FORMATS[0]
elif request.LANGUAGE_CODE == 'en':
return formats_en.DATE_INPUT_FORMATS[0]

最佳答案

根据对您问题的评论,我猜测您的代码中真正拥有的是这样的:

from datetime import datetime as dt 

last_contacted = "19/01/2013"
current_tz = timezone.get_current_timezone()
model_instance.date_time = dt.strptime(last_contacted, get_current_date_input_format(request))
model_instance.date_time = current_tz.localize(date_time)

其中 model_instance 是一个模型实例,它有一个名为 date_time 的 DateTimeField。

class MyModel(models.Model)
....
date_time = DateTimeField()

Python datetime.strptime函数返回一个朴素的 datetime 对象,您正试图将其分配给 DateTimeField,然后生成警告,因为使用了非朴素的 datetime启用时区支持时对象不正确。

如果您将对 strptimelocalize 的调用组合在一行中,那么从简单的 datetime 到非-naive datetime 在分配给 date_time 之前完成,因此在这种情况下您不会得到错误。

附加说明:如果请求中没有时区,您的get_current_date_input_format 函数应该返回一些默认时区以供使用,否则strptime 调用将失败。

关于python - 如何解决 strptime() 引起的 naive datetime RuntimeWarning?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14447224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com