Use strptime() function to convert string to datetime in Python. This method is a class method in datetime class.
Syntax
datetime.strptime(date_string, format)
Convert string to datetime Python example
Simple example code. datetime.strptime
is the main routine for parsing strings into datetimes. It can handle all sorts of formats, with the format determined by a format string you give it:
String to datetime
from datetime import datetime
str1 = '09/09/18 12:15:20'
dt = datetime.strptime(str1, '%m/%d/%y %H:%M:%S')
print(type(dt))
print(dt)
Output:
String to date object
from datetime import datetime
str1 = '09/09/2021'
d = datetime.strptime(str1, '%m/%d/%Y').date()
print(d)
Output: 2021-09-09
String to time object
from datetime import datetime
str1 = '12::50::16'
t = datetime.strptime(str1, '%H::%M::%S').time()
print(t)
Output: 12:50:16
Python strptime() format directives
Directive | Description | Example Output |
---|---|---|
%a | Weekday is 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 | A weekday is 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 | The year without century as a zero-padded decimal number. | 01, 02, … 99 |
%Y | The 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 | The second is 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. | % |
Do comment if you have any doubts and suggestions on this Python string datetime topic.
Note: IDE: PyCharm 2021.3.3 (Community Edition)
Windows 10
Python 3.10.1
All Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.