- Structure of the ISO 8601 Date
strtime()to Parse ISO 8601 Date in Python
fromisoformat()to Parse ISO 8601 Date in Python
dateutilto Parse ISO 8601 Date in Python
Dates are important to everyone and crucial to many applications we use. As a developer, it can be a little confusing with the different time zones or time objects that exist and working around them.
However, standards often exist that make the work easier, and that’s what this article entails. Moreover, we will discuss the structure of a typical ISO 8601 date and show you how to parse typical DateTime objects to the standardized DateTime that can be used all over.
Structure of the ISO 8601 Date
The ISO (International Organization for Standardization) works on creating standardization for its member countries across different fields, which often encompasses technical and non-technical areas. Areas such as engineering are part of their priorities.
The numerous standardizations include the ISO 8601 DateTime, represented by the month, day, hour, minutes, seconds, and milliseconds. It is used as the DateTime standard worldwide for any data and is time-based which helps prevent misrepresentation and errors.
If you are to build a Python application that is used worldwide, understanding the ISO 8601 DateTime object is important, and parsing it might be a requirement.
The ISO 8601 datetime is represented with the year starting at the left and ends with a millisecond parameter and is often combined with other computer characters from
The above ISO DateTime object represents the 11th day of August in the year 2022 at 5 p.m. within the local time zone.
It is important to state the ISO 8601 DateTime string requires the date section, but the time section is optional. They are different variants of ISO 8601, but the above would be the reference of this article.
strtime() to Parse ISO 8601 Date in Python
Python comes pre-installed with different modules that are useful for different operations, and one of those pre-installed modules is
datetime, which helps with date and time operations. With the
datetime module, you can obtain
datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) values.
now() method helps us to get and develop the current date and time and gives the typical DateTime object that we can manipulate or parse to get whatever information we need.
from datetime import datetime todaysDate = datetime.now() print(todaysDate)
today() method can be used to achieve the same value. Although, the
now() method is preferred to the
AnoTodaysDate = datetime.today()
Before, we parse the typical Python DateTime object to the standardized ISO 6801 DateTime. Let’s reverse this by creating the ISO 6801 DateTime with the Python DateTime object.
To achieve this, we need the
strftime() method, which helps us to convert DateTime objects to their string representation - this time, the ISO 6801 DateTime string.
from datetime import datetime todaysDate = datetime.now() todaysDateInISO = todaysDate.strftime("%Y-%m-%dT%H:%M:%S.%f%z") print(todaysDateInISO)
todaysDate binding holds the Python DateTime object for the current date and time, and then we pass the binding as an argument to the
strftime() method to create the ISO 8601 DateTime string equivalent.
With these now, how do we convert the ISO 8601 DateTime string to a Python DateTime object? We need a method that does the opposite of the
strftime() method, the
This method creates a DateTime object from a DateTime string.
Therefore, we will pass an ISO 6801 DateTime string as the first argument of the
strptime() and another argument that defines the date format you want - the Python DateTime object
parsedDate = datetime.strptime("2022-03-04T21:08:12Z", "%Y-%m-%dT%H:%M:%SZ") print(parsedDate)
Y-%m-%dT%H:%M:%SZ date format processes the year, month, day, hour, minute, and second using the format codes specified within the Python DateTime object.
fromisoformat() to Parse ISO 8601 Date in Python
Similar to the
strptime() methods, there are dedicated methods that can create ISO 6801 DateTime strings or convert them to Python DateTime objects. The
isoformat() method helps return the time formatted according to ISO, which is processed in the
YYYY-MM-DD HH:MM:SS.mmmmmm format.
And more importantly, the
fromisoformat() method takes the ISO 8601 DateTime string and returns the Python DateTime object equivalent.
To create an ISO 8601 from a Python DateTime object, you can first create the DateTime object using the
now() method and obtain the ISO 8601 property (format) of the result using
from datetime import datetime todaysDate = datetime.now() todaysDateInISO = todaysDate.isoformat() print(todaysDateInISO)
The result often contains a separator between the date and time. Here, it is
T and can be changed. You can change the separator by passing an argument.
todaysDateInISO = todaysDate.isoformat("$") print(todaysDateInISO)
Now to the crux of the matter, we can parse the ISO 8601 DateTime string to a typical Python DateTime object.
parsedDate = datetime.fromisoformat(todaysDateInISO) print(parsedDate)
dateutil to Parse ISO 8601 Date in Python
dateutil Python module is a third-party module that you can use to extend the functionalities accessible via the built-in
To install it, you can utilize the
pip install python-dateutil
Collecting python-dateutil Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 kB 506.3 kB/s eta 0:00:00 Collecting six>=1.5 Downloading six-1.16.0-py2.py3-none-any.whl (11 kB) Installing collected packages: six, python-dateutil Successfully installed python-dateutil-2.8.2 six-1.16.0
In addition, you can also introduce time zone functionalities using another third-party module called
pytz, which can be installed using the
pip install pytz
These libraries can easily create an ISO 8601 date format based on a time zone and parse the ISO 8601 DateTime string to the typical Python DateTime object.
For the example, we will make use of the
US/Eastern time zone and create an ISO 8601 DateTime string using the
timezone() method, the
now() method, and the
from datetime import datetime import pytz usEasternDate = datetime.now(pytz.timezone("US/Eastern")) print(usEasternDate) usEasternDateISO = usEasternDate.isoformat() print(usEasternDateISO)
2022-09-29 10:01:17.654150-04:00 2022-09-29T10:01:17.654150-04:00
Then to parse the ISO 8601 DateTime string to the Python DateTime object, we can use the
parse() method with the ISO date passed as its argument.
parsedDate = parser.parse(usEasternDateISO) print(parsedDate)