Django DateField 转为 Unix 时间戳

37 投票
6 回答
41735 浏览
提问于 2025-04-15 13:31

在我的模型里,有一个字段是这样的:

mydate = models.DateField()

现在有一个JavaScript的图表函数需要一个Unix时间戳,比如“1196550000000”,我该怎么把我的mydate输入转换成Unix时间戳呢?

谢谢!

6 个回答

70

如果你不在模板层,也可以使用相同的 Django 工具。比如:

from django.utils.dateformat import format
print format(mymodel.mydatefield, 'U')
108

我知道之前已经有其他答案被接受了,但这个问题在谷歌搜索结果中排得很高,所以我想再补充一个答案。

如果你在模板层面上工作,可以使用U参数来处理date过滤器,比如:

{{ mydate|date:"U" }}

请注意,这个参数会根据你在settings.py文件中设置的TIMEZONE来决定。

28

编辑:请查看第二个答案,它提供了更好的解决方案

在Python代码中,你可以这样做,把日期或时间转换成Unix时间戳

import time
epoch = int(time.mktime(mydate.timetuple())*1000)

不过在Django模板中,这样做是行不通的,所以你需要一个自定义的过滤器,比如:

import time

from django import template

register = template.Library()

@register.filter
def epoch(value):
    try:
        return int(time.mktime(value.timetuple())*1000)
    except AttributeError:
        return ''

撰写回答