Как преобразовать строку в дату и время в 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.
Счастливое кодирование