Saturday, February 25, 2012

Get current UTC timestamp in Python

Converting current time to UTC (GMT) in python is a very common query that is searched in Google but, I did not find a compact answer when I did the search for my work. I figured out the code by some help from Google and some experimentation of my own. I'll share the code, in case it is useful to someone.

First I'll explain the Epoch time (or POSIX/Unix time) and UTC (Coordinated Universal Time) time format.
Epoch time is calculated as number of seconds elapsed since midnight Jan 1, 1970. It is used in all *nix systems and has become a standard when considering date/time from multiple systems. In python time module allows us to get the current epoch time in local time zone.

import time

epoch_time_in_local_timezone = time.time()

UTC time is basically synonymous of GMT. It marks the 0 offset time zone. Time in all other time zones are calculated with positive/negative offset from UTC. It is used in many cases where there are multiple machines, located in different time zones are involved. To get current UTC time in python we use utcnow() function from datetime module. But, if you need the time in seconds you need to do the following -

import calendar, datetime

current_utc_time_in_sec = calendar.timegm(datetime.datetime.utcnow().utctimetuple())

You can match the correctness of generated time in by converting Human date to timestamp in GMT format.


  1. Are you saying that the value you are getting for epoch_time_in_local_timezone is different from current_utc_time_in_sec? Everything I've read says that time.time() is seconds from the epoch, which in almost every machine is from 1970-01-01, 00:00 UTC (see Also, it looks like the source code for datetime.datetime.utcnow() and time.time() both end up using _PyTime_gettimeofday() to get the current time (see Modules/_datetimemodule.c and Modules/timemodule.c in

    1. Precisely that is what I observed that time. It was Ubuntu 10.04/python 2.6 as far as I remember.

  2. Both methods return same timestamp values.