Django DateField 转为 Unix 时间戳
在我的模型里,有一个字段是这样的:
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 ''