Skip to content

Instantly share code, notes, and snippets.

@squioc
Created July 9, 2012 20:49
Show Gist options
  • Star 16 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save squioc/3078803 to your computer and use it in GitHub Desktop.
Save squioc/3078803 to your computer and use it in GitHub Desktop.
conversion between iso8601 date format and unix epoch datetime
from datetime import datetime
import calendar
def epoch_to_iso8601(timestamp):
"""
epoch_to_iso8601 - convert the unix epoch time into a iso8601 formatted date
>>> epoch_to_iso8601(1341866722)
'2012-07-09T22:45:22'
"""
return datetime.fromtimestamp(timestamp).isoformat()
def iso8601_to_epoch(datestring):
"""
iso8601_to_epoch - convert the iso8601 date into the unix epoch time
>>> iso8601_to_epoch("2012-07-09T22:27:50.272517")
1341872870
"""
return calendar.timegm(datetime.strptime(datestring, "%Y-%m-%dT%H:%M:%S.%f").timetuple())
if __name__ == "__main__":
import doctest
doctest.testmod()
@blairg23
Copy link

blairg23 commented Feb 28, 2017

So much simpler:

If you want to get the seconds since epoch, you can use python-dateutil to convert it to a datetime object and then convert it so seconds using the strftime method. Like so:

>>> import dateutil.parser as dp
>>> t = '1984-06-02T19:05:00.000Z'
>>> parsed_t = dp.parse(t)
>>> t_in_seconds = parsed_t.strftime('%s')
>>> t_in_seconds
'455047500'

from: http://stackoverflow.com/a/27246418/1224827

@johntmyers
Copy link

That's not right. strftime will use local time zone, so you're epoch answer does not match 1984-06-02T19:05:00.000Z

@johntmyers
Copy link

Using actual UTC functions:

calendar.timegm(dateutil.parser.parse('2017-03-08T14:55:24Z').timetuple())

@sergei-bondarenko
Copy link

You can use that:

>>> from dateutil.parser import parse
>>> parse('2017-03-08T14:55:24Z').timestamp()
1488984924.0

@anksvault
Copy link

You can use that:

>>> from dateutil.parser import parse
>>> parse('2017-03-08T14:55:24Z').timestamp()
1488984924.0

Works well for me. Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment