The datetime module contains functions that allow the manipulation of date and time. The module contains various classes for date and time manipulation, of which the most important ones are datetime, timedelta, date, and time. datetime contains attributes year, month, day, hour, minute, second, microsecond, and tzinfo (the last attribute provides time zone information). date and time contain subsets of these attributes. Objects of these types are immutable.

I restrict myself to discussing the datetime and timedelta classes, though related functions and methods exist for the other classes.

datetime objects hold a date and a time. Amongst the methods for datetime objects are:

from datetime import datetime

print( datetime.now() )

When printing datetime objects you get a specific format as output. If you want a different format (including printing such things as the day of the week) then the datetime module has functions that allow you to specify different kinds of formatting. For more information, see the Python reference.

To calculate with datetime objects, you need timedelta. A timedelta object specifies a difference between two datetime objects. A timedelta object stores days, seconds, and microseconds. You can create timedelta objects with other period-representing arguments, but it only stores the three mentioned here; other arguments are recalculated into these three.

You can perform all kinds of calculations with timedelta objects, but the most useful ones are concerning the difference between datetime objects. So you can add a timedelta object to a datetime object to get a new datetime object, or subtract two datetime objects from each other to get their difference as a timedelta object.

from datetime import datetime, timedelta

thisyear = datetime.now().year
xmasthisyear = datetime( thisyear, 12, 25, 23, 59, 59 )
thisday = datetime.now()
days = xmasthisyear - thisday

if days.days < 0:
    print( "Christmas will come again next year." )
elif days.days == 0:
    print( "It's Christmas!" )
else:
    print( "Only", days.days, "days to Christmas!" )