Python strptime()

In this article, you will learn to create a datetime object from a string (with the help of examples).

The strptime() method creates a datetime object from the given string.

Note: You cannot create datetime object from every string. The string needs to be in a certain format.

Example 1: string to datetime object


from datetime import datetime

date_string = "21 June, 2018"

print("date_string =", date_string)
print("type of date_string =", type(date_string))

date_object = datetime.strptime(date_string, "%d %B, %Y")

print("date_object =", date_object)
print("type of date_object =", type(date_object))

When you run the program, the output will be:


date_string = 21 June, 2018
type of date_string = <class 'str'>
date_object = 2018-06-21 00:00:00
type of date_object = <class 'datetime.datetime'>

How strptime() works?

The strptime() class method takes two arguments:

  • string (that be converted to datetime)

  • format code

Based on the string and format code used, the method returns its equivalent datetime object.

In the above example:

Here,

  • %d - Represents the day of the month. Example: 01, 02, ..., 31

  • %B - Month's name in full. Example: January, February etc.

  • %Y - Year in four digits. Example: 2018, 2019 etc.

Example 2: string to datetime object


from datetime import datetime

dt_string = "12/11/2018 09:15:32"

# Considering date is in dd/mm/yyyy format
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)

# Considering date is in mm/dd/yyyy format
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)

When you run the program, the output will be:

dt_object1 = 2018-11-12 09:15:32
dt_object2 = 2018-12-11 09:15:32

Format Code List

The table below shows all the format codes that you can use.

ValueError in strptime()

If the string (first argument) and the format code (second argument) passed to the strptime() doesn't match, you will get ValueError. For example:


from datetime import datetime

date_string = "12/11/2018"
date_object = datetime.strptime(date_string, "%d %m %Y")

print("date_object =", date_object)

If you run this program, you will get an error.

ValueError: time data '12/11/2018' does not match format '%d %m %Y'

Last updated