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.

Web Hosting
Fast, scalable hosting for any website
  • 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)
python

datetime.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
python

In 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 in strptime().

  • 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 to strptime() 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.

Was this article helpful?
We use cookies on our website to provide you with the best possible user experience. By continuing to use our website or services, you agree to their use. More Information.
Page top