Display timestamp in django template

前端 未结 5 1090
太阳男子
太阳男子 2020-12-16 13:26

I need to display timestamp of a post with in django template. The timestamp would be like:

\"timestamp\":1337453263939 in milli seconds

I

相关标签:
5条回答
  • 2020-12-16 14:02
    {% now "U" %}
    

    The "U" is a date format for Unix epoch, and can also be used with built-in date filter. So, if you have the date in a variable:

    {{ value|date:"U" }}
    
    0 讨论(0)
  • 2020-12-16 14:03

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

    1. Create directory 'templatetags' in application with view, that renders template.
    2. 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)
      
    3. In your template, add

      {% load timetags %}
      
    4. 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))
    
    0 讨论(0)
  • 2020-12-16 14:09

    Maybe you can use the date filter: https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#date

    0 讨论(0)
  • 2020-12-16 14:17

    I don't think the date filter takes timestamps, so unless I'm overseeing a filter, you could simply create one?

    # python
    from datetime import datetime
    
    # django
    from django import template
    
    
    register = template.Library()
    
    @register.filter("timestamp")
    def timestamp(value):
        try:
            return datetime.fromtimestamp(value)
        except AttributeError, e:
            catch errors..
    
    0 讨论(0)
  • 2020-12-16 14:20

    Just write a custom filter that converts your timestamp string to a datetime object. Then you can either further process it into something readable (a string representing your time) and return it to your template or just return a python datetime object and use django's date filter.

    So you could have something like this {{ timestamp_string|convert_to_datetime|date:'D d M Y' }}

    More on this subject at: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

    0 讨论(0)
提交回复
热议问题