Python How-To: Working With Dates And Times In Python
dev_neil_a
Posted on May 23, 2023
- Introduction
-
Using The datetime Python Library
- Displaying The Current Date And Time
- Displaying The Current Date
- Displaying The Current Time
- Calculate The Difference Between Two Dates
- Calculate The Difference Between Two Times
- Calculate The Difference Between Two Dates And Times
- Converting Between Date Formats
- Working With Dates / Times In Different Timezones
- Conclusion
- References
Introduction
Working with dates and times is something that comes up frequently when building solutions with any programming language. Most languages, including Python, will have a library built-in that can be used to work with dates and time.
For Python, there is a built-in library called datetime
that can be used to simplify working with dates and time based date.
Using The datetime Python Library
As the datetime
library is built-into Python, there is nothing, other than Python to install. Let us look at some examples of how to use the datetime
library.
Displaying The Current Date And Time
First, let's get the current date and time:
import datetime
print(f"Current Date & Time: {datetime.datetime.now()}")
Output:
Current Date & Time: 2023-04-22 20:04:05.506534
Using the datetime.datetime.now()
method provides both the current date and time of the system it is run on.
By default, the date is formatted as year-month-day. This is known as the ISO 8601 standard date format.
Displaying The Current Date
Now let's get just the current date:
import datetime
print(f"Date: {datetime.datetime.now().date()}")
Output:
Date: 2023-04-22
The syntax is very much the same as getting the date and time but adding .date()
to the end will display only the date.
Displaying The Current Time
Next, let's get just the current time:
import datetime
print(f"Time: {datetime.datetime.now().time()}")
Output:
Time: 20:04:05.506567
This is basically the same as getting just the date but instead of adding .date()
to the end, adding .time()
returns just the time.
Calculate The Difference Between Two Dates
Working out the difference between two dates and / or times is something that is done frequently. First, let's look at an example of how to work out the time difference between two dates:
import datetime
date_one = datetime.date(year=2023, month=4, day=22)
date_two = datetime.date(year=2022, month=3, day=22)
print(f"The time difference is: {date_one - date_two}")
Output:
The time difference is: 396 days, 0:00:00
For each of the two date variables, a date is specified using the datetime.date()
method, with a year, month and day specified for each.
From there, a simple subtraction of one from the other is performed to work out the difference.
Calculate The Difference Between Two Times
Now, let's look at another example but instead of showing the difference between two dates, show the difference between two times:
import datetime
time_one = datetime.timedelta(hours = 15, minutes = 52)
time_two = datetime.timedelta(hours = 13, minutes = 58)
print(f"The time difference is: {time_one - time_two}")
Output:
The time difference is: 1:54:00
This is very similar to the previous date example but it uses the timedelta()
method to set the time. Using the time()
method is not an option as it doesn't allow for mathematical operations to be performed against it.
Calculate The Difference Between Two Dates And Times
To wrap up working out the differences between two dates or times, let's take a look at an example of how to work out the difference between two dates and times:
import datetime
date_time_one = datetime.datetime(year = 2023, month = 4, day = 22,
hour = 11, minute = 52)
date_time_two = datetime.datetime(year = 2022, month = 3, day = 22,
hour = 13, minute = 58)
print(f"The time difference is: {date_time_one - date_time_two}")
Output:
The time difference is: 395 days, 21:54:00
This method basically uses the same method as working out the difference between two dates with additional arguments being passed for the hours and minutes. Seconds and milliseconds can also be passed, if needed.
Converting Between Date Formats
Working with different formatted dates is another common occurrence. There are three main date formats that are typically used:
- Year, Month, Day (ISO standard, which is Python's default format)
- Day, Month, Year (European standard)
- Month, Day, Year (U.S.A standard)
Converting between these formats in Python is easy to do with the datetime
library. The following example will show how to convert from the ISO format to both the European and U.S.A standard formats:
import datetime
current_date = datetime.datetime.now()
print(f"Default Date Format: {current_date.date()}")
print(f"Current Time: {current_date.strftime('%H:%M:%S')}\n")
print(f"U.S.A Date Format: {current_date.strftime('%m/%d/%Y')}")
print(f"European Date Format: {current_date.strftime('%d/%m/%Y')}")
Output:
Default Date Format: 2023-04-22
Current Time: 20:04:05
U.S.A Date Format: 04/22/2023
European Date Format: 22/04/2023
The above example sets the current_date
variable to the current date and time. That is then used to convert the date using the strftime()
method to the format that is required.
To explain what the %m/%d/%Y
and %d/%m/%Y
mean inside the strftime()
method:
-
%m
is the month as a number. -
%d
is the day. -
%Y
is the full year (2023 for example). -
/
is used as the divider. It can be anything but it is best to use/
or a-
.
If the month needs to be the full name, rather than a number, change it from %m
to %B
.
The date would then be April/22/2023
or 22/April/2023
. This output format doesn't look ideal so change the output format to %B %d, %Y
(April 22, 2023
) or %d %B, %Y
(22 April, 2023
), both of which are more standard formats.
Working With Dates / Times In Different Timezones
Last but not least, let's take a look at working with different timezones.
There is a built-in method within the datetime
library for handling timezones but there is a simpler solution for it in the form of a third-party library called [pytz](https://pypi.org/project/pytz/.
This library isn't installed with Python so it will need to be installed using pip
:
pip install pytz
Once it is installed, it can be imported and then be called to show all of the timezones available in the library using the .all_timezones
method.
import datetime
import pytz
print(pytz.all_timezones)
The output is far too long to show but all of the options in the (Python) list it produces can be used to take a date and time and convert it to the appropriate timezone. It won't however though convert the date format to the region of that timezone so that will need to be done manually, if required.
The following example will show a number of timezone conversions for different timezones in different regions / continents:
import datetime
import pytz
# --- Local time:
local_date_time = datetime.datetime.now()
print(f"Local Time: {local_date_time.strftime('%d/%m/%Y, %H:%M:%S')}\n")
# --- Time in Paris, France:
tz_paris = pytz.timezone("Europe/Paris")
paris_date_time = datetime.datetime.now(tz = tz_paris)
print(f"Paris Time: {paris_date_time.strftime('%d/%m/%Y, %H:%M:%S')}\n")
# --- Time in Canberra, Australia:
tz_canberra = pytz.timezone("Australia/Canberra")
canberra_date_time = datetime.datetime.now(tz = tz_canberra)
print(f"Canberra Time: {canberra_date_time.strftime('%d/%m/%Y, %H:%M:%S')}\n")
# --- Time in Washington D.C, U.S.A:
tz_dc = pytz.timezone("US/Eastern")
dc_date_time = datetime.datetime.now(tz = tz_dc)
print(f"Washington D.C Time: {dc_date_time.strftime('%m/%d/%Y, %H:%M:%S')}\n")
Output:
Local Time: 22/04/2023, 20:04:05
Paris Time: 22/04/2023, 21:04:05
Canberra Time: 23/04/2023, 05:04:05
Washington D.C Time: 04/22/2023, 15:04:05
To go over what the code did, let's take the Washington D.C example as they are all the same, except for the local time example and the date format.
-
tz_dc
- This sets the variable to the US/Eastern timezone. -
dc_date_time
- This gets the date and time as normal but passing thetz = dc_date_time
argument will set the date and time to that in the US/Eastern timezone. - The print statement output will be the date and time in the US/Eastern timezone and in the format used in the U.S.A. That format can be changed as it was manually set.
Conclusion
Working with dates and times is something that is done a lot in Python (along with other languages). The examples shown are some of the most common tasks that are performed.
There are many other options for working and manipulating date and time data so feel free to look at the documentation in the references section.
In closing, I hope this article was useful and have a nice day!
References
Documentation for the datetime library:
https://docs.python.org/3/library/datetime.html
Documentation for the pytz timezone library:
Posted on May 23, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.