How to convert a string to datetime in Python
Datetime objects allow for simple time calculations, including adding or subtracting intervals. Converting strings into datetime objects is essential for accurately organizing, analyzing and displaying time data in Python.
How does converting strings to datetime work in Python?
Converting a Python string to datetime involves transforming a text string, which includes a date and/or time, into a datetime object. Datetime is a Python data structure designed to handle and adjust date and time information. Converting strings to datetime is often needed to handle date and time data that appears in string format.
The data is converted into a format that can be used to perform calculations, make date comparisons or format time information among other things. Methods for concatenating expressions using Python string format can also be useful when managing datetime objects.
- 99.9% uptime
- PHP 8.3 with JIT compiler
- SSL, DDoS protection, and backups
How to convert strings to datetime objects in Python
There are various functions and modules, such as the datetime
library and the strptime()
method, that you can use to convert strings to datetime objects and vice versa.
strptime()
The strptime()
(string parse time) method from the datetime
library is used to convert a string into a Python datetime object. Two arguments are required: the string to be parsed and the date/time format of the string.
datetime.strptime(date_string, format)
pythondatetime.datetime()
With the strptime()
method, a string can be converted into a datetime.datetime
object, taking into account a specific date/time format.
from datetime import datetime
date_string = '2023-10-30 12:00:00'
date_object = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
print(date_object) # Output: 2023-10-30 12:00:00
pythonIn this example, the date_string
is specified as '2023-10-30 12:00:00'
, and the format '%Y-%m-%d %H:%M:%S'
defines the order and how the date and time should appear in the string. The strptime()
method interprets the string based on this format and generates a datetime.datetime
object, which is subsequently stored in the date_object
variable.
Here is what '%Y-%m-%d %H:%M:%S'
means:
-
%Y
: Four-digit year -
%m
: Two-digit month -
%d
: Two-digit day -
%H
: Hour (24-hour format) -
%M
: Minutes -
%S
: Seconds
datetime.time()
By converting strings into a datetime.time
object, you can represent times without a date. This can be accomplished using the strptime()
method from the datetime
class, or by dividing a time string into hours, minutes, and seconds.
from datetime import datetime
time_string = '14::30::00'
time_object = datetime.strptime(time_string, '%H::%M::%S').time()
print(time_object) # Output: 14:30:00
python'%H:%M:%S'
stands for the hours:minutes:seconds format. The strptime()
method interprets the time string according to this format and creates a datetime.time
object.
datetime.date()
Alternatively, you can transform a string into a datetime.date
object by using the strptime()
method from the datetime
class, or by manually dividing the date string into year, month and day components.
from datetime import datetime
date_string = '2023-11-30'
date_object = datetime.strptime(date_string, '%Y-%m-%d').date()
print(date_object) # Output: 2023-11-30
python'%Y-%m-%d'
is the year-month-day format. The strptime()
method analyzes the date string and creates a datetime.date
object.
How to troubleshoot strptime()
errors
When using the strptime()
method for converting strings to datetime objects in Python, you may encounter errors, especially if the specified format does not match the format of the input string. Here are some common errors and ways to fix them:
-
ValueError: time data '...' does not match format '...'
: This error occurs if the input string does not correspond to the specified format. Make sure that the correct format pattern was used instrptime()
. -
ValueError: unconverted data remains
: This error is displayed if uninterpreted data remains after the string has been processed. Ensure that the format pattern covers all sections of the input string. -
TypeError: strptime() argument 1 must be str, not ...
: This can happen if the parameter passed tostrptime()
is not a string. Make sure that the provided value is a string that includes the date/time format.
You should ensure that the format pattern correctly interprets all parts of the input string (year, month, day, time, etc.). It’s also important to take possible differences in separators, capitalization and other details between the format pattern and the input string into account.