In a model I have a such field: mydate = models.DateField()
now a javascript graph function requires unix timestamp such as "1196550000000", how can I return the unix timestamp of my mydate input.
Thanks
In a model I have a such field: mydate = models.DateField()
now a javascript graph function requires unix timestamp such as "1196550000000", how can I return the unix timestamp of my mydate input.
Thanks
In your
views.py
, you can convert the value ofmydate
to seconds since the Unix epoch as follows:Then pass it in the dictionary you use as an argument to
render_to_response()
(or whatever you're using to render your view), and in your template, stick{{seconds}}
into a hidden field, which you can then pull out of the DOM to pass to your javascript graph function.Note that a
DateField
maps to the Python objectdatetime.date
, and as such, itstimetuple
will have its hours, minutes and seconds fields set to 0. If that's not fine-grained enough for you, you'll need to changemydate
to a DateTimeField and it'll be adatetime.datetime
. You can still usemydate.timetuple()
if you do this.Also, I'm assuming you're using local time. If you're using UTC time, you want
calendar.gmtime()
rather thantime.mktime()
andmydate.utctimetuple()
rather thanmydate.timetuple()
, bututctimetuple()
is only a valid method fordatetime.datetime
objects. See thedatetime
docs (alsotime
andcalendar
) for more fiddly details.EDIT: fiddly details such as the fact that
mktime()
returns a float, which piquadrat remembered and I didn't. The custom-filter approach is also a good one. Voting that one up.edit: please check the second answer, it has a much better solution
In python code, you can do this to convert a date or datetime to the Unix Epoch
This doesn't work in a Django template though, so you need a custom filter, e.g:
I know another answer was accepted a while ago, but this question appears high on Google's search results, so I will add another answer.
If you are working at the template level, you can use the
U
parameter to thedate
filter, e.g.:Note that it will be based upon the
TIMEZONE
in your settings.py.Another option:
And if you're not in the template layer, you can still use the same underlying django utils. Ex: