The datetime Library

>>> import datetime
>>> dir(datetime)
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', 
'__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', 
'datetime', 'datetime_CAPI', 'time', 'timedelta', 'timezone', 'tzinfo']

 

Create DateTime

Creating a datetime object with datetime().

>>> th_start = datetime.datetime(2014, 10, 15, 9)
>>> th_start
datetime.datetime(2014, 10, 15, 9, 0)

 

Now

Create a datetime object with now() gives us the exact current time in details (804347 is in microseconds).

>>> datetime.datetime.now()
datetime.datetime(2017, 4, 17, 15, 25, 3, 804347)
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2017, 4, 17, 15, 25, 3, 804347)

 

Date or Time

Only Date
>>> now.date()
datetime.date(2017, 4, 17)
Only Time
>>> now.time()
datetime.time(16, 3, 47, 775270)

 

Replace

The replace() function replaces date and time values of a datetime object.

>>> treehouse_start = datetime.datetime.now()
>>> treehouse_start
datetime.datetime(2017, 4, 17, 15, 25, 38, 298320)

>>> treehouse_start = treehouse_start.replace(hour=9, minute=0, second=0, microsecond=0)
>>> treehouse_start
datetime.datetime(2017, 4, 17, 9, 0)

 

TimeDelta

>>> time_worked = datetime.datetime.now() - treehouse_start
>>> time_worked
datetime.timedelta(0, 23468, 253192)

TimeDelta Attributes & Methods
>>> time_worked.days
0
>>> time_worked.seconds
23468
>>> time_worked.microseconds
253192
>>> dir(time_worked)
['__abs__', '__add__', '__bool__', '__class__', '__delattr__', '__dir__', '__div
mod__', '__doc__', '__eq__', '__floordiv__', '__format__', '__ge__', '__getattri
bute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt_
_', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__radd__',
 '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__r
mod__', '__rmul__', '__rsub__', '__rtruediv__', '__setattr__', '__sizeof__', '__
str__', '__sub__', '__subclasshook__', '__truediv__', 'days', 'max', 'microsecon
ds', 'min', 'resolution', 'seconds', 'total_seconds']

Practical Example

Calculating the number of hours spent working.

>>> time_worked
datetime.timedelta(0, 23468, 253192)
>>> 
>>> time_worked.seconds/3600
6.518888888888889
>>> hours_worked = round(time_worked.seconds/3600)
>>> hours_worked
7