(Python Tutorial – 045)
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.
Directive | Meaning | Example |
%a |
Abbreviated weekday name. | Sun, Mon, … |
%A |
Full weekday name. | Sunday, Monday, … |
%w |
Weekday as a decimal number. | 0, 1, …, 6 |
%d |
Day of the month as a zero-padded decimal. | 01, 02, …, 31 |
%-d |
Day of the month as a decimal number. | 1, 2, …, 30 |
%b |
Abbreviated month name. | Jan, Feb, …, Dec |
%B |
Full month name. | January, February, … |
%m |
Month as a zero-padded decimal number. | 01, 02, …, 12 |
%-m |
Month as a decimal number. | 1, 2, …, 12 |
%y |
Year without century as a zero-padded decimal number. | 00, 01, …, 99 |
%-y |
Year without century as a decimal number. | 0, 1, …, 99 |
%Y |
Year with century as a decimal number. | 2013, 2019 etc. |
%H |
Hour (24-hour clock) as a zero-padded decimal number. | 00, 01, …, 23 |
%-H |
Hour (24-hour clock) as a decimal number. | 0, 1, …, 23 |
%I |
Hour (12-hour clock) as a zero-padded decimal number. | 01, 02, …, 12 |
%-I |
Hour (12-hour clock) as a decimal number. | 1, 2, … 12 |
%p |
Locale’s AM or PM. | AM, PM |
%M |
Minute as a zero-padded decimal number. | 00, 01, …, 59 |
%-M |
Minute as a decimal number. | 0, 1, …, 59 |
%S |
Second as a zero-padded decimal number. | 00, 01, …, 59 |
%-S |
Second as a decimal number. | 0, 1, …, 59 |
%f |
Microsecond as a decimal number, zero-padded on the left. | 000000 – 999999 |
%z |
UTC offset in the form +HHMM or -HHMM. | |
%Z |
Time zone name. | |
%j |
Day of the year as a zero-padded decimal number. | 001, 002, …, 366 |
%-j |
Day of the year as a decimal number. | 1, 2, …, 366 |
%U |
Week number of the year (Sunday as the first day of the week). 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). 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. | Mon Sep 30 07:06:05 2013 |
%x |
Locale’s appropriate date representation. | 09/30/13 |
%X |
Locale’s appropriate time representation. | 07:06:05 |
%% |
A literal ‘%’ character. | % |
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'
Disclaimer: The information and code presented within this recipe/tutorial is only for educational and coaching purposes for beginners and developers. Anyone can practice and apply the recipe/tutorial presented here, but the reader is taking full responsibility for his/her actions. The author (content curator) of this recipe (code / program) has made every effort to ensure the accuracy of the information was correct at time of publication. The author (content curator) does not assume and hereby disclaims any liability to any party for any loss, damage, or disruption caused by errors or omissions, whether such errors or omissions result from accident, negligence, or any other cause. The information presented here could also be found in public knowledge domains.
Learn by Coding: v-Tutorials on Applied Machine Learning and Data Science for Beginners
Latest end-to-end Learn by Coding Projects (Jupyter Notebooks) in Python and R:
All Notebooks in One Bundle: Data Science Recipes and Examples in Python & R.
End-to-End Python Machine Learning Recipes & Examples.
End-to-End R Machine Learning Recipes & Examples.
Applied Statistics with R for Beginners and Business Professionals
Data Science and Machine Learning Projects in Python: Tabular Data Analytics
Data Science and Machine Learning Projects in R: Tabular Data Analytics
Python Machine Learning & Data Science Recipes: Learn by Coding
R Machine Learning & Data Science Recipes: Learn by Coding
Comparing Different Machine Learning Algorithms in Python for Classification (FREE)
There are 2000+ End-to-End Python & R Notebooks are available to build Professional Portfolio as a Data Scientist and/or Machine Learning Specialist. All Notebooks are only $29.95. We would like to request you to have a look at the website for FREE the end-to-end notebooks, and then decide whether you would like to purchase or not.