Как преобразовать строку в дату и время в Python

Опубликовано: 2022-12-20

Преобразование одного типа данных в другой тип данных имеет решающее значение для любого языка программирования. Почти все языки программирования поддерживают преобразования типов для встроенных типов данных.

Пользовательские типы данных, такие как datetime, нуждаются в дополнительных модулях для преобразования. Нам нужны модули, особенно для преобразования datetime и времени, поскольку работа с ними никогда не была легкой для программистов. К счастью, в Python есть встроенные модули для работы с датой и временем.

Мы узнаем, как преобразовать datetime datetime и времени в Python, используя разные модули. Прежде чем перейти к этому, давайте посмотрим, почему нам нужно преобразовать его в первую очередь.

Зачем нам нужно преобразовывать строку даты и времени в объект даты и времени?

Когда нам приходится работать с датами, работать непросто, если они в строковом формате. Преобразование их в формат даты и времени делает работу с ними очень простой. Даты в строках аналогичны обычным строкам. У него не будет никаких специальных методов для работы с датами. У него будут общие строковые методы, которые нам не понадобятся при работе с датами.

Допустим, нам нужно сравнить две даты. Если они в строковом формате, мы можем правильно их сравнить. Если они в формате datetime и времени, мы можем использовать операторы сравнения, такие как числа.

Это только один сценарий, в котором преобразование в формат datetime и времени упрощает задачу. Существует множество сценариев, таких как добавление дат, вычитание, обработка часовых поясов и т. д., где преобразование datetime datetime и времени в объект даты и времени делает нашу жизнь проще, чем когда-либо.

С учетом сказанного давайте рассмотрим различные способы преобразования datetime datetime и времени. Мы будем использовать встроенные модули datetime и сторонние модули dateutil для преобразования строки datetime и времени в объект datetime и времени. Начнем с модуля datetime

Использование даты и времени

datetime — это встроенный модуль Python, который используется для работы с датами и временем. В этом модуле много классов, которые помогают нам работать с датами и временем. Мы будем использовать класс datetime.datetime для преобразования.

datetime.datetime имеет много методов. Нас интересует метод strptime , который поможет нам в преобразовании. Давайте проверим это.

datetime.strptime

Метод datetime.strptime используется для преобразования строки datetime и времени в объект datetime и времени. Он принимает две строки, одна из которых представляет собой строку datetime и времени, а другая — формат этой строки datetime и времени. И он возвращает объект datetime .

Давайте посмотрим на пример

 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))

Если вы запустите приведенный выше код, вы увидите следующий вывод.

 2022-12-19 21:37:56

Мы взяли строку даты и времени и преобразовали ее в объект datetime.strptime и datetime , используя метод datetime . Убедитесь, что формат, который вы предоставляете методу, точно соответствует строке datetime и времени. Если они не совпадают, вы можете получить ошибку или неправильный вывод.

Мы использовали некоторые коды форматирования для формата datetime . Вы можете обратиться ко всем кодам форматов в документации.

Метод datetime.strptime возвращает полное datetime . Если вы хотите получить дату и время отдельно, мы можем использовать методы даты и time объекта datetime . Давайте посмотрим код.

 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())

Запустите приведенный выше код, и вы увидите следующий вывод.

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

date и time методов вернут свои объекты соответственно. У них снова будут свои соответствующие методы для дат и времени.

Мы предоставили правильные строки и форматы для метода datetime.strptime , который мы видели выше. Если мы не предоставили их правильно, то мы получим ошибки. Давайте посмотрим, как обрабатывать эти ошибки. Запустите следующий код.

 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))

Приведенный выше код вызовет ошибку, поскольку форматирование не соответствует строке datetime и времени. Для обработки таких ошибок мы можем использовать try-except в Python. Давайте добавим это.

 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)

Теперь снова запустите код. Вы увидите следующее сообщение об ошибке без нарушения кода.

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

Точно так же мы можем добавить метод try-except для следующего метода parser.parse . Это помогает нам избежать взлома кода посередине. Это не имеет особого отношения к этому учебному контексту, но напомнит вам использовать его в вашем коде.

Вот и все для модуля datetime . Перейдем к следующему модулю dateutil .

Использование dateutil

Модуль dateutil предоставляет расширения для модуля datetime . Это значительно упрощает работу с датами и временем благодаря множеству простых в использовании методов. Давайте установим модуль с помощью следующей команды.

 pip install python-dateutil

Нас интересует dateutil.parser.parse . Давайте посмотрим, как преобразовать datetime datetime и времени в объект даты и времени.

parser.parse

Метод parser.parse возьмет строку datetime и времени и преобразует ее в соответствующий формат объекта datetime и времени. Нам не нужно предоставлять какое-либо форматирование для этого метода. Он автоматически преобразует datetime строку даты и времени в объект datetime и времени. Давайте посмотрим пример.

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

Если вы запустите приведенный выше код, вы увидите следующий вывод.

 2022-12-19 21:37:56

Строка datetime и времени должна быть в определенном формате, который принимает метод parser.parse . Он выдаст ошибку, если формат строки datetime и времени не соответствует желаемому формату. Вы можете проверить все форматы строк даты и времени, которые он принимает для автоматического преобразования.

Поскольку метод parser.parse возвращает объект datetime , мы можем получить доступ к объектам date и time отдельно, как мы видели с модулем datetime . Давайте посмотрим код.

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

Вы можете увидеть приведенный ниже вывод, если запустите приведенный выше код.

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

Как видите dateutil упрощает работу с датами и временем. Вы можете изучить модуль в документации.

Заключение

Мы использовали один встроенный модуль и один сторонний модуль для преобразования строки datetime и времени в объект DateTime. Существует еще один встроенный модуль под названием time , с помощью которого мы можем преобразовать строку datetime в объект DateTime, аналогичный модулям datetime и dateutil . Попробуй сам. Это не составит труда, так как вы уже проделали то же самое с другими модулями.

Там может быть больше библиотек, с помощью которых мы можем добиться того же. Модули, которые мы использовали в этом уроке, являются стандартными и широко используемыми. Вы можете узнать больше о других модулях и выбрать тот, который подходит именно вам.

Вы также можете узнать, как рассчитать разницу во времени в python.

Счастливое кодирование