datetime本地时间格式不符合要求的格式



我希望这个问题不是重复的——我至少无法通过查看其他类似的问答来解决这个问题;作为

我正在使用Django 2.2、Postgresql9.5和Django模板语言制作一个web应用程序,并为前端提供引导。

在settings.py中,我有以下时间设置:

TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True

在我的一些表格中,我有datetime本地字段:

date = forms.CharField(required=False, widget=forms.DateTimeInput(
attrs={
'type':'datetime-local',
'class':'form-control',
}
))

在我的Django模板中,我呈现了如下所示的日期字段:

<input type="datetime-local" id="id_date" class="form-control" value="{{ basic_form.date.value|date:"c"}}">

当加载一个具有从数据库中检索到的日期值的日期字段的页面时,我得到了以下错误。我无法在表单日期字段中显示日期:

指定的值"2020-10-28T09:28:00+00:00";不符合要求的格式。格式是";yyyy-MM-ddThh:MM";然后是可选的":ss";或":ss。SSS";。

我还尝试直接从views.py:接收的表单变量"呈现"模板中的日期字段

{{ basic_form.date }}

然后我得到了同样的警告,但是日期值不包含T"分隔符":

指定的值"2020-10-28 09:28:00+00:00";不符合要求的格式。格式是";yyyy-MM-ddThh:MM";然后是可选的":ss";或":ss。SSS";。

不知道如何解释此警告消息,因为在我看来,日期的格式似乎是正确的。

在服务器端,我收到一个运行时警告:

RuntimeWarning:DateTimeField Recipe.date在时区支持处于活动状态时收到了一个初始日期时间(2020-10-28 09:28:00(。

有人知道如何通过javascript获取日期字段中显示的日期和应用程序中进一步使用的日期值吗?非常感谢您的帮助。谢谢

去掉tzinfo不是制作简单日期时间的正确方法。当您当前的时区是UTC时,它会工作,就像现在看起来的那样,但在其他情况下会中断。相反,使用Django的make_naive(),它将首先正确地将时间转换为本地时区。

date = make_naive(date)

或者,只需将其保留为可感知的日期时间(Django的模板引擎会自动将其转换为本地时间(,然后显式指定正确的字符串格式(类似于value|date(Y-m-d H:i:s)(。

我通过删除在datetime.datetime对象末尾添加的时区信息(+00:0(解决了这个问题。在views.py中,当处理数据库查询中的数据时,我添加了以下行:

date = date.replace(tzinfo=None)

相关内容

最新更新