Javaexercise.com

How to Convert a String to Date Object in Python?

To convert a string to datetime object, Python provides strptime() method. This method belongs to datetime and time module, and we can use it to get date or time objects after conversion. 

Here, we will learn to convert the string object with various formats such as dd-mm-yy or dd/mm/yy, etc into date object. 

The strptime() method takes two arguments one is a string that represents date and the second is date format in which we want to get the result.

Let's get started with some examples.

 

Convert string to date object in Python

Suppose, we have a string that represents date as Monday, July 12, 2010 10:01:46 and we want to get it into date object then we just need to pass this string value to the strptime() method along with the format string. See the code below.

"""
Convert String date to date object in Python
"""

from datetime import datetime

string_date = "Monday, July 12, 2010 10:01:46"
print(string_date)
# Check type
print(type(string_date))
# Convert the date
formatter_string = "%A, %B %d, %Y %H:%M:%S"
date = datetime.strptime(string_date, formatter_string)
print(date)

# Check type
print(type(date))

Output:

Monday, July 12, 2010 10:01:46
<class 'str'>
2010-07-12 10:01:46
<class 'datetime.datetime'>

 

Python Date Directives

Python allows us to format date as per the requirement so provides dozens of directives that we can use in string-formatter. Refer the table for such directive.

Directive Description Example Output

%a

Weekday as the locale’s abbreviated name.

Sun, Mon, …, Sat (en_US)
So, Mo, …, Sa (de_DE)

%A

Weekday as locale’s full name.

Sunday, Monday, …, Saturday (en_US)
Sonntag, Montag, …, Samstag (de_DE)

%w

Weekday as a decimal number, where 0 is Sunday and 6 is Saturday.

0, 1, 2, 3, 4, 5, 6

%d

Day of the month as a zero-padded decimal number.

01, 02, …, 31

%b

Month as locale’s abbreviated name.

Jan, Feb, …, Dec (en_US)
Jan, Feb, …, Dez (de_DE)

%B

Month as locale’s full name.

January, February, …, December (en_US)
Januar, Februar, …, Dezember (de_DE)

%m

Month as a zero-padded decimal number.

01, 02 … 12

%y

A year without century as a zero-padded decimal number.

01, 02, … 99

%Y

A year with century as a decimal number.

0001, 0002, … , 9999

%H

Hour (24-hour clock) as a zero-padded decimal number.

01, 02, … , 23

%I

Hour (12-hour clock) as a zero-padded decimal number.

01, 02, … , 12

%p

Locale’s equivalent of either AM or PM.

AM, PM (en_US)
am, pm (de_DE)

%M

Minute as a zero-padded decimal number.

01, 02, … , 59

%S

Second as a zero-padded decimal number.

01, 02, … , 59

%f

Microsecond as a decimal number, zero-padded on the left.

000000, 000001, …, 999999
Not applicable with time module.

%z

UTC offset in the form ±HHMM[SS] (empty string if the object is naive).

(empty), +0000, -0400, +1030

%Z

Time zone name (empty string if the object is naive).

(empty), UTC, IST, CST

%j

Day of the year as a zero-padded decimal number.

001, 002, …, 366

%U

Week number of the year (Sunday as the first day of the week) as a zero padded decimal number.
All days in a new year preceding the first Sunday are considered to be in week 0.

00, 01, …, 53

%W

Week number of the year (Monday as the first day of the week) as a decimal number.
All days in a new year preceding the first Monday are considered to be in week 0.

00, 01, …, 53

%c

Locale’s appropriate date and time representation.

Tue Aug 16 21:30:00 1988 (en_US)
Di 16 Aug 21:30:00 1988 (de_DE)

%x

Locale’s appropriate date representation.

08/16/88 (None)
08/16/1988 (en_US)
16.08.1988 (de_DE)

%X

Locale’s appropriate time representation.

21:30:00 (en_US)
21:30:00 (de_DE)

%%

A literal ‘%’ character.

%

 

Convert string 12-July-2010 to date object in Python

Here, we converted the date string such as 12-July-2010 to a date object by using strptime() method and see we used directives such as %B to represent July in the date.

You should be careful while using these directives because using wrong directives will lead to compile error and code will not execute.

"""
Convert String date to datetime in Python
"""

from datetime import datetime
# 12-July-2010
string_date = "12-July-2010"
print(string_date)
# Check type
print(type(string_date))
# Convert the date
formatter_string = "%d-%B-%Y"
date = datetime.strptime(string_date, formatter_string)
print(date)

# Check type
print(type(date))

Output:

12-July-2010
<class 'str'>
2010-07-12 00:00:00
<class 'datetime.datetime'>

 

Convert string 12/7/2010 to date object in Python

"""
Convert String date to datetime in Python
"""

from datetime import datetime
# 12/7/2010
string_date = "12/7/2010"
print(string_date)
# Check type
print(type(string_date))
# Convert the date
formatter_string = "%d/%m/%Y"
date = datetime.strptime(string_date, formatter_string)
print(date)

# Check type
print(type(date))

Output:

12/7/2010
<class 'str'>
2010-07-12 00:00:00
<class 'datetime.datetime'>

 

Convert string Monday, July 12, 2010 10:01:46 to date object in Python

"""
Convert String date to datetime in Python
"""

from datetime import datetime
# Monday, July 12, 2010 10:01:46
string_date = "Monday, July 12, 2010 10:01:46"
print(string_date)
# Check type
print(type(string_date))
# Convert the date
formatter_string = "%A, %B %d, %Y %H:%M:%S"
date = datetime.strptime(string_date, formatter_string)
print(date)

# Check type
print(type(date))

Output:

Monday, July 12, 2010 10:01:46
<class 'str'>
2010-07-12 10:01:46
<class 'datetime.datetime'>

 

Useful Resources: