How do I display current time using Python + Django?

68,832

Solution 1

Maybe this documentation is useful to you: Time Zones

Formatting time in a view

You can get the current time using:

import datetime
now = datetime.datetime.now()

or to get time depending on timezone:

import datetime
from django.utils.timezone import utc

now = datetime.datetime.utcnow().replace(tzinfo=utc)

to format the time you can do:

import datetime

now = datetime.datetime.now().strftime('%H:%M:%S')  #  Time like '23:12:05'

Formatting time in a template

You can send a datetime to the template, let's supose you send a variable called myDate to the template from the view. You could do like this to format this datetime:

{{ myDate | date:"D d M Y"}}  # Format Wed 09 Jan 2008
{{ myDate | date:"SHORT_DATE_FORMAT"}}  # Format 09/01/2008
{{ myDate | date:"d/m/Y"}}  # Format 09/01/2008

Check the Template filter date

I hope this is useful to you

Solution 2

Use the now template tag. For example:

{% now "jS F Y H:i" %}

but you'll need to send your string through template engine before sending the response for it to work.

Solution 3

For Django code, not in template the support is actually quite simple.

In settings change the timezone:

TIME_ZONE = 'Asia/Kolkata'

And where you need to use, use the following code:

from django.utils import timezone
now = timezone.now()

Source: https://docs.djangoproject.com/en/2.1/topics/i18n/timezones/

Share:
68,832
Lucas
Author by

Lucas

Updated on May 06, 2020

Comments

  • Lucas
    Lucas about 4 years

    I am learning how to use Python and Django to produce a small webapp that prints out the current time. I am using this with the Google App Engine.

    Right now it's only displaying a blank page, but I want it to display the current time. I also want to map the function to the home page.. not /time/.

    from django.http import HttpResponse
    from django.conf.urls.defaults import *
    import datetime
    
    # returns current time in html
    def current_datetime(request):
        now = datetime.datetime.now()
        html = "<html><body>It is now %s.</body></html>" % now
        return HttpResponse(html)
    
    def main(): 
        # maps url to current_datetime func
        urlpatterns = patterns('',
            (r'^time/$', current_datetime),
        )
    
    if __name__ == '__main__':
      main()