Django中如何将DateField取出的字符串日期转为日期对象?
解决Django日期字符串转DateField对象的问题
问题根源
- 从session取出的日期字符串包含多余双引号(如
'"2024-02-14"'),需先清理。 strptime格式符号使用错误:%YYYY和%MM不是合法格式符,正确的4位年份为%Y、两位月份为%m,标准日期格式应为%Y-%m-%d。
解决方案
方法1:清理字符串后用strptime转换
先去除字符串两端的双引号,再用正确格式转成date对象(Django的DateField对应datetime.date类型):
from datetime import datetime # 清理多余引号 clean_date_str = got_date.strip('"') # 转换为date对象 got_date_2 = datetime.strptime(clean_date_str, "%Y-%m-%d").date()
方法2:用date.fromisoformat简化转换(Python3.7+)
ISO格式的日期字符串(YYYY-MM-DD)可直接用date.fromisoformat转换,无需指定格式:
from datetime import date clean_date_str = got_date.strip('"') got_date_2 = date.fromisoformat(clean_date_str)
优化建议
存入session时,直接将日期对象转为标准ISO字符串,避免后续清理步骤:
# 存入session target_obj = myModel.objects.get(id=1) request.session['saved_date'] = str(target_obj.date)
内容的提问来源于stack exchange,提问作者Mohammed Baashar
相关产品推荐
相关产品推荐

