python – 如何解决strptime()引起的天真日期时间RuntimeWarning
我正在尝试编码而不会在我的控制台中发出任何警告.到目前为止,我一直非常擅长避免它,直到这一个案例,这对我来说似乎是一个鸡和鸡蛋的情况.
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) 第三行是抛出这个警告:
它有点奇怪,因为我需要先将unicode转换为日期时间才能在第四行将datetime对象转换为datetime-aware对象(带有timezone支持). 专家的任何建议? 谢谢 更新: 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是Model的一个实例,它具有一个名为date_time的DateTimeField. class MyModel(models.Model) .... date_time = DateTimeField() Python 如果将对strptime和localize的调用组合在一行上,则在分配到date_time之前完成从天真日期时间到非天真日期时间的转换的完整计算,因此在这种情况下您不会收到错误. 附加说明:如果请求中没有时区,则get_current_date_input_format函数应返回一些默认时区,否则strptime调用将失败. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |