How To Convert a String to a datetime or time Object in Python | DigitalOcean (2024)

Introduction

The Python datetime and time modules both include a strptime() class method to convert strings to objects.

In this article, you’ll use strptime() to convert strings into datetime and struct_time() objects.

Deploy your Python applications from GitHub using DigitalOcean App Platform. Let DigitalOcean focus on scaling your app.

Converting a String to a datetime object using datetime.strptime()

The syntax for the datetime.strptime() method is:

datetime.strptime(date_string, format)

The datetime.strptime() method returns a datetime object that matches the date_string parsed by the format. Both arguments are required and must be strings.

For details about the format directives used in datetime.strptime(), refer to the strftime() and strptime() Format Codes in the Python documentation.

Convert String to datetime.datetime() Object Example

The following example converts a date and time string into a datetime.datetime() object, and prints the class name and value of the resulting object:

from datetime import datetimedatetime_str = '09/19/22 13:55:26'datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S')print(type(datetime_object))print(datetime_object) # printed in default format

The output is:

<class 'datetime.datetime'>2022-09-19 13:55:26

Convert String to datetime.date() Object Example

The following example converts a date string into a datetime.date() object, and prints the class type and value of the resulting object:

from datetime import datetimedate_str = '09-19-2022'date_object = datetime.strptime(date_str, '%m-%d-%Y').date()print(type(date_object))print(date_object) # printed in default format

The output is:

<class 'datetime.date'>2022-09-19

Convert String to datetime.time() Object Example

The following example converts a time string into a datetime.time() object, and prints the class type and value of the resulting object:

from datetime import datetimetime_str = '13::55::26'time_object = datetime.strptime(time_str, '%H::%M::%S').time()print(type(time_object))print(time_object)

The output is:

<class 'datetime.time'>13:55:26

Convert String to datetime.datetime() Object with Locale Example

The following example converts a German locale date string into a datetime.datetime() object, and prints the class type and value of the resulting object:

from datetime import datetimeimport localelocale.setlocale(locale.LC_ALL, 'de_DE')date_str_de_DE = '16-Dezember-2022 Freitag' # de_DE localedatetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')print(type(datetime_object))print(datetime_object)

The output is:

<class 'datetime.datetime'>2022-12-16 00:00:00

Note that the resulting object doesn’t include the weekday name from the input string because a datetime.datetime() object includes the weekday only as a decimal number.

Converting a String to a struct_time() Object Using time.strptime()

The syntax for the time.strptime() method is:

time.strptime(time_string[, format])

The time.strptime() method returns a time.struct_time() object that matches the time_string parsed by the format. The time_string is required and both arguments must be strings. If format is not provided, the default is:

'%a %b %d %H:%M:%S %Y'

This corresponds to the format returned by the ctime() function.

The format directives are the same for time.strptime() and time.strftime(). Learn more about the format directives for the time module in the Python documentation.

Convert String to struct_time() Object With Format Provided Example

The following example converts a time string into a time.struct_time() object by providing the format argument, and prints the value of the resulting object:

import timetime_str = '11::33::54'time_obj = time.strptime(time_str, '%H::%M::%S')print("A time.struct_time object that uses the format provided:")print(time_obj)

The output is:

A time.struct_time object that uses the format provided:time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1,tm_hour=11, tm_min=33, tm_sec=54, tm_wday=0, tm_yday=1,tm_isdst=-1)

As shown in the output, when you convert a string into a time.struct_time() object, the strptime() method uses placeholder values for any format directives that aren’t defined in the format argument.

Convert String to struct_time() Object Using Default Format Example

If you don’t provide a format argument when you convert a time string into a time.struct_time() object, then the default format is used and an error occurs if the input string does not exactly match the default format of:

 '%a %b %d %H:%M:%S %Y'

The following example converts a time string into a time.struct_time() object with no format argument provided, and prints the value of the resulting object:

import time# default format - "%a %b %d %H:%M:%S %Y"time_str_default = 'Mon Dec 12 14:55:02 2022'time_obj_default = time.strptime(time_str_default)print("A time.struct_time object that uses the default format:")print(time_obj_default)

The output is:

A time.struct_time object that uses the default format:time.struct_time(tm_year=2022, tm_mon=12, tm_mday=12,tm_hour=14, tm_min=55, tm_sec=2, tm_wday=0, tm_yday=346,tm_isdst=-1)

As shown in the output, when you convert a string into a time.struct_time() object, the strptime() method uses placeholder values for any format directives that aren’t defined in the format argument or by the default format if no format is provided.

Troubleshooting strptime() Errors

If the input string can’t be parsed by strptime() using the provided format, then a ValueError is raised. You can use the try block to test for parsing errors, along with the except block to print the results. The ValueError messages that you get when you use the strptime() method clearly explain the root causes of the parsing errors. The following example demonstrates some common errors, such as extra data and a format mismatch:

from datetime import datetimeimport timedatetime_str = '09/19/18 13:55:26'try: datetime_object = datetime.strptime(datetime_str, '%m/%d/%y')except ValueError as ve1: print('ValueError 1:', ve1)time_str = '99::55::26'try: time_object = time.strptime(time_str, '%H::%M::%S')except ValueError as ve2: print('ValueError 2:', ve2)

The output is:

ValueError 1: unconverted data remains: 13:55:26ValueError 2: time data '99::55::26' does not match format '%H::%M::%S'

Conclusion

In this tutorial, you converted date and time strings into datetime and time objects using Python. Continue your learning with more Python tutorials.

How To Convert a String to a datetime or time Object in Python  | DigitalOcean (2024)
Top Articles
Latest Posts
Article information

Author: Rev. Leonie Wyman

Last Updated:

Views: 5827

Rating: 4.9 / 5 (79 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Rev. Leonie Wyman

Birthday: 1993-07-01

Address: Suite 763 6272 Lang Bypass, New Xochitlport, VT 72704-3308

Phone: +22014484519944

Job: Banking Officer

Hobby: Sailing, Gaming, Basketball, Calligraphy, Mycology, Astronomy, Juggling

Introduction: My name is Rev. Leonie Wyman, I am a colorful, tasty, splendid, fair, witty, gorgeous, splendid person who loves writing and wants to share my knowledge and understanding with you.