How do I get the UTC time, i.e. milliseconds since Unix epoch on Jan 1, 1970?

2

8 Answers

Use datetime.utcnow():

from datetime import datetime datetime.utcnow() 

For your purposes when you need to calculate an amount of time spent between two dates all that you need is to subtract end and start dates. The results of such subtraction is a timedelta object.

From the python docs:

class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]]) 

And this means that by default you can get any of the fields mentioned in it's definition - days, seconds, microseconds, milliseconds, minutes, hours, weeks. Also timedelta instance has total_seconds() method that:

Return the total number of seconds contained in the duration. Equivalent to (td.microseconds + (td.seconds + td.days * 24 * 3600) * 106) / 106 computed with true division enabled.

2

Timezone-aware datetime object, unlike datetime.utcnow():

from datetime import datetime,timezone now_utc = datetime.now(timezone.utc) 

Timestamp in milliseconds since Unix epoch:

datetime.now(timezone.utc).timestamp() * 1000 
4

In the form closest to your original:

import datetime def UtcNow(): now = datetime.datetime.utcnow() return now 

If you need to know the number of seconds from 1970-01-01 rather than a native Python datetime, use this instead:

return (now - datetime.datetime(1970, 1, 1)).total_seconds() 

Python has naming conventions that are at odds with what you might be used to in Javascript, see PEP 8. Also, a function that simply returns the result of another function is rather silly; if it's just a matter of making it more accessible, you can create another name for a function by simply assigning it. The first example above could be replaced with:

utc_now = datetime.datetime.utcnow 
13
import datetime import pytz # datetime object with timezone awareness: datetime.datetime.now(tz=pytz.utc) # seconds from epoch: datetime.datetime.now(tz=pytz.utc).timestamp() # ms from epoch: int(datetime.datetime.now(tz=pytz.utc).timestamp() * 1000) 
0

Timezone aware with zero external dependencies:

from datetime import datetime, timezone def utc_now(): return datetime.utcnow().replace(tzinfo=timezone.utc) 
3

From datetime.datetime you already can export to timestamps with method strftime. Following your function example:

import datetime def UtcNow(): now = datetime.datetime.utcnow() return int(now.strftime("%s")) 

If you want microseconds, you need to change the export string and cast to float like: return float(now.strftime("%s.%f"))

3

you could use datetime library to get UTC time even local time.

import datetime utc_time = datetime.datetime.utcnow() print(utc_time.strftime('%Y%m%d %H%M%S')) 

why all reply based on datetime and not time? i think is the easy way !

import time nowgmt = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()) print(nowgmt) 
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy