Display timestamp in django template

date, django, templates, timestamp

Solution

You could use custom template filters (see https://docs.djangoproject.com/en/dev/howto/custom-template-tags/). In your case it could like this:

- Create directory 'templatetags' in application with view, that renders template.

Put into this dir blank file "__init__.py" and "timetags.py" with code:

from django import template
import datetime
register = template.Library()

def print_timestamp(timestamp):
    try:
        #assume, that timestamp is given in seconds with decimal point
        ts = float(timestamp)
    except ValueError:
        return None
    return datetime.datetime.fromtimestamp(ts)

register.filter(print_timestamp)

In your template, add

{% load timetags %}

Use following syntax in template:

{{ timestamp|print_timestamp }}

Where timestamp = 1337453263.939 from your example

This will print timestamp in local date and time format. If you want to customize output, you can modify print_timestamp in following way:

import time
def print_timestamp(timestamp):
    ...
    #specify format here
    return time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(ts))

Problem

I need to display timestamp of a post with in django template. The timestamp would be like: ``` "timestamp":1337453263939 in milli seconds ``` I can convert the timestamp into datetime object and render it in the view. Is there is any direct way to display through the template? The output should be: ``` print(datetime.datetime.fromtimestamp(1337453263.939)) 2012-05-20 00:17:43.939000 ```

Original source