Datetime objekti ļauj veikt vien­kār­šus laika aprēķinus, tostarp pievienot vai atņemt in­ter­vā­lus. Stingru pār­vei­do­ša­na datetime objektos ir būtiska, lai precīzi or­ga­ni­zē­tu, analizētu un attēlotu laika datus Python.

Kā Python valodā darbojas stingu pār­vei­do­ša­na datuma un laika formātā?

Python string pār­vei­do­ša­na datetime ietver teksta string, kas ietver datumu un/vai laiku, pār­vei­do­ša­nu datetime objektā. Datetime ir Python datu struktūra, kas paredzēta datuma un laika in­for­mā­ci­jas apstrādei un pie­lā­go­ša­nai. String pār­vei­do­ša­na datetime bieži ir ne­pie­cie­ša­ma, lai ap­strā­dā­tu datuma un laika datus, kas parādās string formātā.

Dati tiek kon­ver­tē­ti formātā, ko var izmantot, lai veiktu aprēķinus, sa­lī­dzi­nā­tu datus vai formatētu laika in­for­mā­ci­ju, cita starpā. Metodes izteikumu sa­vie­no­ša­nai, iz­man­to­jot Python string formātu, var būt noderīgas arī datetime objektu pār­val­dī­bā.

Kā Python valodā pārvērst virknes datetime objektos

Ir dažādas funkcijas un moduļi, piemēram, datetime bib­lio­tē­ka un strptime() metode, kurus var izmantot, lai pārvērstu virknes datuma un laika objektos un otrādi.

strptime()

strptime() (string parse time) metode no datetime bib­lio­tē­kas tiek izmantota, lai pārvērstu virkni Python datetime objektā. Ir ne­pie­cie­ša­mi divi argumenti: virkne, kas jāanalizē, un virknes datuma/laika formāts.

datetime.strptime(date_string, format)
python

datetime.datetime()

Iz­man­to­jot strptime() metodi, virkni var konvertēt datetime.datetime objektā, ņemot vērā konkrētu datuma/laika formātu.

from datetime import datetime
date_string = '2023-10-30 12:00:00'
date_object = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
print(date_object) # Output: 2023-10-30 12:00:00
python

Šajā piemērā date_string ir norādīts kā '2023-10-30 12:00:00', un formāts '%Y-%m-%d %H:%M:%S' nosaka secību un to, kā datums un laiks jāparāda virknē. Metode strptime() in­ter­pre­tē virkni, pa­ma­to­jo­ties uz šo formātu, un ģenerē objektu datetime.datetime, kas pēc tam tiek saglabāts mainīgajā date_object.

Šeit ir '%Y-%m-%d %H:%M:%S' nozīme:

  • %Y: Četrci­pa­ru gads
  • %m: Divciparu mēnesis
  • %d: Divciparu diena
  • %H: Stunda (24 stundu formāts)
  • %M: Minūtes
  • %S: Sekundes

datetime.time()

Pār­vei­do­jot virknes par datetime.time objektu, var attēlot laiku bez datuma. To var izdarīt, iz­man­to­jot strptime() metodi no datetime klases vai sadalot laika virkni stundās, minūtēs un sekundēs.

from datetime import datetime
time_string = '14::30::00'
time_object = datetime.strptime(time_string, '%H::%M::%S').time()
print(time_object) # Output: 14:30:00
python

'%H:%M:%S' apzīmē formātu stundas:minūtes:sekundes. strptime() metode in­ter­pre­tē laika virkni saskaņā ar šo formātu un izveido datetime.time objektu.

datetime.date()

Al­ter­na­tī­vi, jūs varat pārveidot virkni par datetime.date objektu, iz­man­to­jot strptime() metodi no datetime klases, vai manuāli sadalot datuma virkni gada, mēneša un dienas kom­po­nen­tēs.

from datetime import datetime
date_string = '2023-11-30'
date_object = datetime.strptime(date_string, '%Y-%m-%d').date()
print(date_object) # Output: 2023-11-30
python

'%Y-%m-%d' ir gads-mēnesis-diena formāts. strptime() metode analizē datuma virkni un izveido datetime.date objektu.

Kā novērst strptime() kļūdas

Iz­man­to­jot strptime() metodi, lai Python valodā pārvērstu virknes datetime objektos, var rasties kļūdas, jo īpaši, ja no­rā­dī­tais formāts neatbilst ievades virknes formātam. Šeit ir daži bieži sastopami kļūdu veidi un to no­vēr­ša­nas veidi:

  • ValueError: time data '...' does not match format '...': Šī kļūda rodas, ja ievadītā virkne neatbilst no­rā­dī­ta­jam formātam. Pār­lie­ci­nie­ties, ka strptime(). punktā ir izmantots pareizs formāta paraugs.
  • ValueError: unconverted data remains: Šī kļūda tiek parādīta, ja pēc virknes apstrādes paliek ne­in­ter­pre­tē­ti dati. Pār­lie­ci­nie­ties, ka formāta paraugs aptver visas ievades virknes sadaļas.
  • TypeError: strptime() argument 1 must be str, not ...: Tas var notikt, ja parametrs, kas nodots strptime(), nav virkne. Pār­lie­ci­nie­ties, ka norādītā vērtība ir virkne, kas ietver datuma/laika formātu.

Jums jā­pār­lie­ci­nās, ka formāta modelis pareizi in­ter­pre­tē visas ievades virknes daļas (gads, mēnesis, diena, laiks utt.). Tāpat ir svarīgi ņemt vērā ie­spē­ja­mās at­šķi­rī­bas at­da­lī­tā­jos, lielajos burtiem un citās detaļās starp formāta modeli un ievades virkni.

Go to Main Menu