How to solve the strptime() caused naive datetime RuntimeWarning?
我试图在不向控制台发出任何警告的情况下进行编码。到目前为止,我一直很擅长避免这种情况,直到这一次,在我看来,这就像一个鸡蛋和鸡的情况。
1 2 3 4 5 6 | 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转换为datetime,然后才能在第四行将datetime对象转换为支持datetime的对象(支持时区)。
专家有什么建议吗?
谢谢
更新:
1 2 3 4 5 | 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] |
号
从评论到您的问题,我猜想您的代码中真正包含的内容如下:
1 2 3 4 5 6 | 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) |
号
其中,
1 2 3 | class MyModel(models.Model) .... date_time = DateTimeField() |
python
如果您将对
附加说明:如果请求中没有时区,您的
你打开设置文件中的"使用"了吗?
1 | USE_TZ = True |
此外,从文档中可以采取一些更具体的步骤。