Django在模板上约会javascript

Hel*_*nar 19 javascript django django-templates

在下面实现这样的简单方法是什么?selected_date来自django context作为python日期:

<script type="text/javascript">
    var selected_year = {{ selected_date|date:"Y" }}
    var selected_month = {{ selected_date|date:"m" }} - 1;
    var selected_day = {{ selected_date|date:"d"}}
    var selected_date = new Date(selected_year, selected_month, selected_day);
    alert(selected_date);
</script>
Run Code Online (Sandbox Code Playgroud)

Exe*_*ian 49

我在python中使用isoformat函数取得了很大的成功:

var selected_date = new Date("{{ selected_date.isoformat }}")
Run Code Online (Sandbox Code Playgroud)

  • 这绝对比我建议的要简单得多!+1(删除我的答案) (2认同)

ryc*_*ych 12

根据区域设置,接受的答案可能会生成错误的日期.

在FF控制台中:

>>> n = new Date('2011-01-01');
Date {Fri Dec 31 2010 16:00:00 GMT-0800 (PST)}
Run Code Online (Sandbox Code Playgroud)

因此,最好将Y,m,d整数传递给Date构造函数.

我使用模板过滤器来生成日期构造函数:

@register.filter(name='jsdate')
def jsdate(d):
    """formats a python date into a js Date() constructor.
    """
    try:
        return "new Date({0},{1},{2})".format(d.year, d.month - 1, d.day)
    except AttributeError:
        return 'undefined'
Run Code Online (Sandbox Code Playgroud)


小智 8

我正在使用它并且意识到Android在解析时返回了"无效日期" - 我认为它比桌面Webkit更严格.我使用以下,似乎工作:

new Date('{{ talk.start_datetime|date:"D, d M Y H:i:s"}}'),
Run Code Online (Sandbox Code Playgroud)

有关JS日期解析的更多信息,请访问:https: //developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse