Geekflare is supported by our audience. We may earn affiliate commissions from buying links on this site.
Share on:

How to Convert String to Datetime in Python

How-to-Convert-String-to-Datetime-in-Python
Invicti Web Application Security Scanner – the only solution that delivers automatic verification of vulnerabilities with Proof-Based Scanning™.

Converting from one type of data to another type of data is crucial in any programming language. Almost all programming languages support type conversions for built-in data types.

Custom data types like datetime need extra modules for conversions. We need modules, especially for datetime conversions as working them was never been easy for programmers. Luckily, python has built-in modules to work with datetime.

We will learn how to convert a datetime string to a datetime object in Python using different modules. Before jumping into that, let’s see why we need to convert it in the first place.

Why do we need to convert a datetime string to a datetime object?

When we have to work with dates, it’s not easy to work if they are in the string format. Converting them to datetime format makes working with them very easy. Dates in strings are like normal strings. It won’t have any special methods to work with dates. It will have general string methods, which we won’t be needing while working with dates.

Let’s say we have to compare two dates. If they are in string format, we can compare them correctly. If they are in datetime format, we can use the comparison operators like numbers.

This is only one scenario where converting to datetime format makes things easy. There are plenty of scenarios like adding dates, subtracting, handling timezones, etc., where converting datetime string to datetime object makes our lives more easier than ever.

With that said let’s see different ways to convert a datetime string to a datetime object. We will be using built-in datetime and third-party dateutil modules to convert the datetime string to datetime object. Let’s start with the datetime module

Using datetime

The datetime is a built-in module of Python which is used to work with dates and times. There are a lot of classes in this module that helps us to work with dates and time. We will be using datetime.datetime class for the conversion.

The datetime.datetime has many methods. We are interested in the strptime method which will help us in the conversion. Let’s check it.

datetime.strptime

The datetime.strptime method is used to convert datetime string to a datetime object. It takes two strings, one is datetime string and the other is the format of that datetime string. And it returns the datetime object.

Let’s see an example

from datetime import datetime

string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))

If you run the above code, you will see the following output.

2022-12-19 21:37:56

We have taken a datetime string and converted it to datetime object using datetime.strptime method. Make sure that the format that you are providing to the method exactly matches the datetime string. If they didn’t match, then you may get an error or incorrect output.

We have used some formatting codes for the datetime format. You can refer to all of the format codes in the docs.

The datetime.strptime method returns complete datetime. If you want to get the date and time separately, we can use the date time methods of datetime object. Let’s see the code.

from datetime import datetime

string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"

## getting date separately
print("Date:", datetime.strptime(string, formatting).date())

## getting time separately
print("Time:", datetime.strptime(string, formatting).time())

Run the above code and you will see the following output.

Date: 2022-12-19
Time: 21:37:56

The methods date and time will return their objects respectively. They will again have their respective methods for dates and times.

We have provided the correct strings and formats for the datetime.strptime method that we have seen above. If we didn’t provide them correctly, then we will get errors. Let’s see how to handle those errors. Run the following code.

from datetime import datetime

string = "19:12:2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))

The above code will throw an error because the formatting doesn’t match the datetime string. To handle these kinds of errors, we can use Pythons’ try-except. Let’s add it.

from datetime import datetime

try:
    string = "19:12:2022 09:37:56 PM"
    formatting = "%d-%m-%Y %I:%M:%S %p"
    print(datetime.strptime(string, formatting))
except ValueError as error:
    print(error)

Now, run the code again. You will see the following error message without breaking the code.

time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'

Similarly, we can add the try-except for the coming parser.parse method as well. It helps us to avoid breaking the code in the middle. This is not specially related to this tutorial context, but it will remind you to use it in your code.

That’s it for the datetime module. Let’s move to the next module dateutil.

Using dateutil

The module dateutil provides extensions to the datetime module. It makes working with dates and times a lot easier with a lot of methods with easy usage. Let’s install the module with the following command.

pip install python-dateutil

The method that we are interested in is dateutil.parser.parse. Let’s see how to convert datetime string to datetime object.

parser.parse

The method parser.parse will take a datetime string and converts it into a respective datetime object format. We don’t need to provide any formatting for this method. It will automatically convert the given datetime string into datetime object. Let’s see an example.

from dateutil import parser

string = "19-12-2022 09:37:56 PM"
print(parser.parse(string))

If you run the above code, you will see the following output.

2022-12-19 21:37:56

The datetime string must be in a particular format that the parser.parse method accepts. It will throw an error if the datetime string format is not as per its desired format. You can check all the datetime string formats that it accepts for automatic conversions.

As the parser.parse method returns datetime object, we can access the date and time objects separately as we have seen with the datetime module. Let’s see the code.

from dateutil import parser

string = "19-12-2022 09:37:56 PM"
print("Date:", parser.parse(string).date())
print("Time:", parser.parse(string).time())

You can see the below output if you run the above code.

Date: 2022-12-19
Time: 21:37:56

As you can see dateutil makes it easier to work with the dates and times comparatively. You can explore the module in the docs.

Conclusion

We have used one built-in module and one third-party module to convert the datetime string to a DateTime object. There is another built-in module called time with which we can convert the datetime string to a DateTime object similar to datetime and dateutil modules. Try it yourself. It won’t be hard as you have already done a similar thing with other modules.

There might be more libraries with which we can achieve the same thing. The modules that we have used in thing tutorial are standard and widely used. You can explore more about other modules and pick the best one that suits you.

You may also explore how to calculate time difference in python.

Happy Coding 🙂

Thanks to our Sponsors
More great readings on Development
Power Your Business
Some of the tools and services to help your business grow.
  • Invicti uses the Proof-Based Scanning™ to automatically verify the identified vulnerabilities and generate actionable results within just hours.
    Try Invicti
  • Web scraping, residential proxy, proxy manager, web unlocker, search engine crawler, and all you need to collect web data.
    Try Brightdata
  • Semrush is an all-in-one digital marketing solution with more than 50 tools in SEO, social media, and content marketing.
    Try Semrush
  • Intruder is an online vulnerability scanner that finds cyber security weaknesses in your infrastructure, to avoid costly data breaches.
    Try Intruder