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 If you run the above code, you will see the following output. 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. Run the above code and you will see the following output. 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. 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. Now, run the code again. You will see the following error message without breaking the code. 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. 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. If you run the above code, you will see the following output. 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. You can see the below output if you run the above code. 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 🙂