将JavaScript date()转换为Python Django models.DateTimeField

时间:2017-02-06 11:48:50

标签: javascript python django datetime

我使用django模型表单将数据提交到数据库。 我使用JavaScript通过以下

自动填充表单
document.getElementById('id_date_received').value = Date();

此输出: Mon Feb 06 2017 11:39:05 GMT+0000 (GMT) django< models.DateTimeField 期望: 2017-02-06 11:39

如何将 Mon Feb 06 2017 11:39:05 GMT+0000 (GMT) 转换为 2017-02-06 11:39 感谢

4 个答案:

答案 0 :(得分:5)

IMO,最好的解决方案是使用 unix时间戳,因为你可以避免所有与时区和时间分析相关的复杂内容。

<强> JS:

js_date = new Date('2012.08.10');

// getTime() returns milliseconds from the UNIX epoch,
// so divide it by 1000 to get the seconds representation.

js_timestamp = js_date.getTime() / 1000;

<强>的Python:

python_date = datetime.datetime.fromtimestamp(js_timestamp)

答案 1 :(得分:2)

你应该考虑使用Moment.js,它是操作日期和时区格式最简单的javascript库。

所以代码会是这样的:

moment(YOUR_DATE_VARIABLE).format('YYYY-MM-DD HH:mm'); // 2017-02-06 11:39

希望这对你有所帮助。

答案 2 :(得分:0)

您可以在模型表单中设置接受特定格式的日期模式。

input_formats=[list of datetime patterns that you want to accept]

答案 3 :(得分:0)

这是一个冗长的解决方案,但这应该可以将Date转换为Django日期时间

我首先通过强制转换将日期转换为字符串

(String(date_var))

然后,当我收到API调用时,使用此命令将其转换

datetime.datetime.strptime(",".join(original_time[:original_time.find("(")-1].split(" ")).replace("GMT",""), '%a,%B,%d,%Y,%H:%M:%S,%z')

我建议保留时区,因为不同的服务器可以位于不同的时区中,这可能会弄乱您的日期!