Како претворити стринг у датум и време у Питхон-у

Конвертовање из једне врсте података у другу врсту података је кључно у сваком програмском језику. Скоро сви програмски језици подржавају конверзије типова за уграђене типове података.

Прилагођеним типовима података као што је датум и време су потребни додатни модули за конверзије. Потребни су нам модули, посебно за конверзије датума и времена, јер програмерима никада није било лако радити на њима. Срећом, питхон има уграђене модуле за рад са датумом и временом.

Научићемо како да конвертујемо стринг датума и времена у објекат датума и времена у Питхон-у користећи различите модуле. Пре него што пређемо на то, хајде да видимо зашто уопште морамо да га конвертујемо.

Зашто је потребно да конвертујемо стринг датума и времена у објекат датума и времена?

Када морамо да радимо са датумима, није лако радити ако су у стринг формату. Њихово претварање у формат датума и времена чини рад са њима веома лаким. Датуми у низовима су као нормални низови. Неће имати никакве посебне методе за рад са датумима. Имаће опште методе стрингова, које нам неће бити потребне док радимо са датумима.

Рецимо да морамо да упоредимо два датума. Ако су у стринг формату, можемо их исправно упоредити. Ако су у формату датума и времена, можемо користити операторе поређења као што су бројеви.

Ово је само један сценарио у којем претварање у формат датума и времена олакшава ствари. Постоји много сценарија као што су додавање датума, одузимање, руковање временским зонама, итд., где претварање стринга датума и времена у објекат датума и времена чини наше животе лакшим него икад.

  10 Питхон Цхеат Схеетс за програмере које могу да обележе

Уз то, хајде да видимо различите начине за претварање стринга датума и времена у објекат датума и времена. Користићемо уграђене датетиме и датеутил модуле треће стране да претворимо стринг датетиме у објекат датетиме. Почнимо са модулом датетиме

Коришћење датума и времена

Датум и време је уграђени модул Питхон-а који се користи за рад са датумима и временима. У овом модулу има много часова који нам помажу да радимо са датумима и временом. За конверзију ћемо користити класу датетиме.датетиме.

Датетиме.датетиме има много метода. Занима нас метода стрптиме која ће нам помоћи у конверзији. Хајде да проверимо.

датетиме.стрптиме

Метода датетиме.стрптиме се користи за претварање стринга датума и времена у објекат датума и времена. Потребна су два стринга, један је стринг датума и времена, а други је формат тог стринга датума и времена. И враћа објекат датетиме.

Хајде да видимо пример

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

Узели смо стринг датума и времена и конвертовали га у објекат датетиме користећи метод датетиме.стрптиме. Уверите се да формат који дајете методу тачно одговара стрингу датума и времена. Ако се не подударају, можда ћете добити грешку или нетачан излаз.

Користили смо неке кодове за форматирање за формат датума и времена. Можете погледати све кодове формата у документима.

Метод датетиме.стрптиме враћа комплетан датум и време. Ако желите да добијете датум и време одвојено, можемо користити методе датума и времена објекта датетиме. Хајде да видимо код.

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

Методе датум и време ће вратити своје објекте респективно. Они ће поново имати своје методе за датуме и време.

  40 Често постављана питања и одговори на интервјуу за РЕСТ АПИ [2023]

Обезбедили смо исправне стрингове и формате за метод датетиме.стрптиме који смо видели изнад. Ако их нисмо исправно дали, добићемо грешке. Хајде да видимо како да се носимо са тим грешкама. Покрените следећи код.

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

Горњи код ће изазвати грешку јер се форматирање не подудара са стрингом датума и времена. Да бисмо решили ове врсте грешака, можемо користити Питхонс-ов три-екцепт. Хајде да га додамо.

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'

Слично, можемо додати и три-осим за долазећу методу парсер.парсе. Помаже нам да избегнемо разбијање кода у средини. Ово није посебно повезано са контекстом овог водича, али ће вас подсетити да га користите у свом коду.

То је то за модул датума и времена. Пређимо на следећи модул датеутил.

Коришћење датеутил

Модул датеутил обезбеђује проширења за модул датетиме. То чини рад са датумима и временом много лакшим уз много метода са лаким коришћењем. Хајде да инсталирамо модул следећом командом.

pip install python-dateutil

Метода која нас занима је датеутил.парсер.парсе. Хајде да видимо како да конвертујемо датетиме стринг у датетиме објекат.

парсер.парсе

Метод парсер.парсе ће узети стринг датума и времена и конвертовати га у одговарајући формат објекта датума и времена. Не морамо да обезбедимо никакво форматирање за овај метод. Он ће аутоматски конвертовати дати стринг датума и времена у објекат датума и времена. Хајде да видимо пример.

from dateutil import parser

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

Ако покренете горњи код, видећете следећи излаз.

2022-12-19 21:37:56

Стринг датума и времена мора бити у одређеном формату који прихвата метод парсер.парсе. Избациће грешку ако формат стринга датума и времена није у складу са жељеним форматом. Можете проверити све формате стрингова датума и времена које прихвата за аутоматске конверзије.

  Како додати „Тражи Гоогле за“ у Мицрософт Едге контекстни мени

Пошто метод парсер.парсе враћа објекат датетиме, можемо приступити објектима датума и времена одвојено као што смо видели код модула датетиме. Хајде да видимо код.

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

Као што видите датеутил олакшава упоредни рад са датумима и временима. Можете истражити модул у документима.

Закључак

Користили смо један уграђени модул и један модул треће стране да конвертујемо стринг датума и времена у објекат ДатеТиме. Постоји још један уграђени модул који се зове време помоћу којег можемо да конвертујемо стринг датума и времена у објекат ДатеТиме сличан модулима датетиме и датеутил. Пробајте сами. Неће бити тешко јер сте већ урадили сличну ствар са другим модулима.

Можда постоји више библиотека са којима можемо постићи исту ствар. Модули које смо користили у туториалу су стандардни и широко коришћени. Можете истражити више о другим модулима и одабрати онај који вам највише одговара.

Такође можете истражити како израчунати временску разлику у Питхон-у.

Срећно кодирање 🙂