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.
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 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) |
%A |
Weekday as locale’s full name. |
Sunday, Monday, …, Saturday (en_US) |
%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) |
%B |
Month as locale’s full name. |
January, February, …, December (en_US) |
%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) |
%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 |
%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. |
00, 01, …, 53 |
%W |
Week number of the year (Monday as the first day of the week) as a decimal number. |
00, 01, …, 53 |
%c |
Locale’s appropriate date and time representation. |
Tue Aug 16 21:30:00 1988 (en_US) |
%x |
Locale’s appropriate date representation. |
08/16/88 (None) |
%X |
Locale’s appropriate time representation. |
21:30:00 (en_US) |
%% |
A literal ‘%’ character. |
% |
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 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 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'>