Skip to content

Date and Time

A date in Python is not a data type of its own, but we can import a module named datetime to work with dates as date objects.

>>> a = datetime.date.today()
>>> a
datetime.date(2016, 2, 18)
>>> a = datetime.date.today()
>>> a.month
2
>>> a.year
2016

>>> a = datetime.time(12,30,00)
>>> a
datetime.time(12, 30)
>>> a.minute
30
>>> a.hour
12

To convert the datetime object to string:

>>> datetime.date.strftime(date.today(), "%Y-%m-%d")
'2016-02-19'
To make a datetime object from string:
>>> datetime.datetime.strptime("01/27/2012","%m/%d/%Y")

To remove timezone info:

>>> updated_date
datetime.datetime(2017, 10, 3, 5, 59, 48, tzinfo=OffsetTzInfo(offset=0, name='UTC'))

>>> updated_date.replace(tzinfo=None)
datetime.datetime(2017, 10, 3, 5, 59, 48)

To find the difference between two days:

>>> a = datetime.datetime.strptime('2016, 2, 19', '%Y, %m, %d')
>>> b = datetime.datetime.strptime('2016, 1, 19', '%Y, %m, %d')
>>> diff = (a - b)
>>> diff.days
31
>>> diff.total_seconds()
2678400.0

Using Timedelta

>>>from datetime import datetime, timedelta
>>> datetime.now()
datetime.datetime(2016, 2, 24, 16, 44, 53, 896757)
>>> datetime.now() + timedelta(1)
datetime.datetime(2016, 2, 25, 16, 44, 55, 685605)
>>> datetime.now() + timedelta(days=1)
datetime.datetime(2016, 2, 25, 16, 44, 58, 370024)

to get the current UTC Time

datetime.datetime.utcnow()

Time Module

>>>import time
>>> time.time()
1455836308.784535
>>> time.sleep(2)  ## to sleep 2 seconds
>>> time.tzname
('PST', 'PDT')
>>>time.strftime('%m/%d/%Y %H:%M:%S', time.localtime())
'05/24/2014 22:06:44’
>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1347517370))
'2012-09-12 23:22:50'
https://docs.python.org/2/library/time.html#time.strftime

pytz

To convert UTC to PST:

import pytz
from pytz import timezone
datetime_obj = datektime.datetime.now()
datetime_obj_pst = datetime_obj.replace(tzinfo=pytz.timezone('US/Pacific'))
print(datetime_obj_pst.strftime('%Y-%m=%d %H:%M:%S %Z%z'))
2016-03=08 11:21:46 PST-0800
datetime.now(timezone('US/Pacific')).isoformat()
'2017-05-05T09:34:29.892245-07:00'