Hogyan lehet a karakterláncot dátumidővé konvertálni a Pythonban

Az egyik adattípusról egy másik adattípusra konvertálás döntő fontosságú minden programozási nyelvben. Szinte minden programozási nyelv támogatja a beépített adattípusok típuskonverzióját.

Az egyéni adattípusokhoz, például a dátumidőhöz, további modulokra van szükség a konverziókhoz. Modulokra van szükségünk, különösen a dátum-idő konverziókhoz, mivel ezek kezelése soha nem volt könnyű a programozók számára. Szerencsére a python beépített modulokkal rendelkezik a dátumidő használatához.

Megtanuljuk, hogyan lehet egy datetime karakterláncot datetime objektummá konvertálni a Pythonban különböző modulok segítségével. Mielőtt belevágnánk, nézzük meg, miért kell először konvertálnunk.

Miért kell egy datetime karakterláncot datetime objektummá alakítanunk?

Amikor dátumokkal kell dolgoznunk, nem könnyű dolgozni, ha karakterlánc formátumban vannak. A dátum és idő formátumba konvertálása nagyon egyszerűvé teszi a velük való munkát. A karakterláncokban lévő dátumok olyanok, mint a normál karakterláncok. Nincsenek speciális módszerei a dátumokkal való munkavégzéshez. Általános karakterlánc-metódusai lesznek, amelyekre nem lesz szükségünk, ha dátumokkal dolgozunk.

Tegyük fel, hogy össze kell hasonlítanunk két dátumot. Ha string formátumban vannak, akkor helyesen tudjuk összehasonlítani őket. Ha dátum és idő formátumban vannak, használhatjuk az összehasonlító operátorokat, például a számokat.

Ez csak az egyik forgatókönyv, amikor a dátum-idő formátumra konvertálás megkönnyíti a dolgokat. Rengeteg forgatókönyv létezik, például dátumok hozzáadása, kivonás, időzónák kezelése stb., ahol a datetime karakterlánc datetime objektummá konvertálása minden eddiginél könnyebbé teszi az életünket.

  9 legjobb eszköz a képek videóvá alakításához filmek és animációk készítéséhez

Ezzel együtt lássunk különböző módokat a datetime karakterlánc datetime objektummá konvertálására. A datetime karakterlánc datetime objektummá konvertálásához beépített datetime és harmadik féltől származó dateutil modulokat fogunk használni. Kezdjük a dátum és idő modullal

Dátum és idő használata

A datetime a Python beépített modulja, amely a dátumok és időpontok kezelésére szolgál. Ebben a modulban sok olyan óra található, amelyek segítenek a dátumokkal és az idővel való munkavégzésben. Az átalakításhoz a datetime.datetime osztályt fogjuk használni.

A datetime.datetime számos módszerrel rendelkezik. Érdekel minket az strptime metódus, ami segít a konverzióban. Nézzük meg.

datetime.strptime

A datetime.strptime metódus a datetime karakterlánc datetime objektummá konvertálására szolgál. Két karakterlánc szükséges, az egyik a datetime karakterlánc, a másik pedig a datetime karakterlánc formátuma. És visszaadja a datetime objektumot.

Lássunk egy példát

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

Ha a fenti kódot futtatja, a következő kimenetet fogja látni.

2022-12-19 21:37:56

Vegyünk egy datetime karakterláncot, és a datetime.strptime metódussal datetime objektummá alakítottuk. Győződjön meg arról, hogy a metódushoz megadott formátum pontosan megegyezik a datetime karakterlánccal. Ha nem egyeznek, akkor hibaüzenetet vagy hibás kimenetet kaphat.

Néhány formázási kódot használtunk a dátum és idő formátumhoz. A dokumentumokban található összes formátumkódra hivatkozhat.

A datetime.strptime metódus teljes dátumidőt ad vissza. Ha külön szeretné megkapni a dátumot és az időt, akkor a datetime objektum datetime metódusait használhatjuk. Lássuk a kódot.

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

Futtassa a fenti kódot, és a következő kimenetet fogja látni.

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

A metódusok dátuma és időpontja rendre visszaadja az objektumokat. Ismét megvannak a saját módszereik a dátumokhoz és időpontokhoz.

  Hogyan kereskedjünk más játékosokkal az „Animal Crossing: New Horizons” játékban

Megadtuk a megfelelő karakterláncokat és formátumokat a datetime.strptime metódushoz, amelyet fent láthattunk. Ha nem adtuk meg őket megfelelően, akkor hibákat kapunk. Lássuk, hogyan kezeljük ezeket a hibákat. Futtassa a következő kódot.

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

A fenti kód hibát jelez, mert a formázás nem egyezik a dátum és idő karakterláncával. Az ilyen típusú hibák kezelésére használhatjuk a Pythons try-t, kivéve. Tegyük hozzá.

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)

Most futtassa újra a kódot. A következő hibaüzenet jelenik meg a kód feltörése nélkül.

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

Hasonlóképpen hozzáadhatjuk a try-t, kivéve a következő parser.parse metódust. Segít elkerülni, hogy a kód közepén feltörjük. Ez nem kapcsolódik kifejezetten ehhez az oktatókörnyezethez, de emlékeztetni fogja, hogy használja ezt a kódban.

A dátum és idő modulnál ennyi. Lépjünk a következő modulra dateutil.

A dateutil használata

A dateutil modul bővítményeket biztosít a datetime modulhoz. Sokkal könnyebbé teszi a dátumokkal és időpontokkal való munkát, számos módszerrel és egyszerű használattal. Telepítsük a modult a következő paranccsal.

pip install python-dateutil

A minket érdeklő módszer a dateutil.parser.parse. Nézzük meg, hogyan lehet a datetime karakterláncot datetime objektummá konvertálni.

  Hogyan védheti meg Discord-fiókját

elemző.elemzés

A parser.parse metódus egy datetime karakterláncot vesz fel, és átalakítja azt a megfelelő datetime objektumformátumba. Ehhez a módszerhez nem kell formázást megadnunk. A megadott datetime karakterláncot automatikusan datetime objektummá konvertálja. Lássunk egy példát.

from dateutil import parser

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

Ha a fenti kódot futtatja, a következő kimenetet fogja látni.

2022-12-19 21:37:56

A datetime karakterláncnak a parser.parse metódus által elfogadott formátumban kell lennie. Hibaüzenetet küld, ha a dátum és idő karakterlánc formátuma nem felel meg a kívánt formátumnak. Ellenőrizheti az összes dátum-idő karakterlánc-formátumot, amelyet az automatikus konverziókhoz elfogad.

Mivel a parser.parse metódus datetime objektumot ad vissza, külön-külön érhetjük el a dátum és idő objektumokat, ahogy azt a datetime modulnál láttuk. Lássuk a kódot.

from dateutil import parser

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

Az alábbi kimenetet láthatja, ha futtatja a fenti kódot.

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

Amint láthatja, a dateutil megkönnyíti a dátumok és időpontok összehasonlítását. A modult a dokumentumokban fedezheti fel.

Következtetés

Egy beépített modult és egy harmadik féltől származó modult használtunk a datetime karakterlánc DateTime objektummá konvertálásához. Van egy másik beépített modul, a time, amellyel a datetime karakterláncot DateTime objektummá alakíthatjuk, hasonlóan a datetime és dateutil modulokhoz. Próbáld ki magad. Nem lesz nehéz, mivel más modulokkal már csináltál hasonlót.

Lehet, hogy több olyan könyvtár is létezik, amellyel ugyanezt elérhetjük. Az oktatóanyagban használt modulok szabványosak és széles körben használtak. További modulokat fedezhet fel, és kiválaszthatja az Önnek legmegfelelőbbet.

Azt is megvizsgálhatja, hogyan számíthatja ki az időkülönbséget a pythonban.

Boldog kódolást 🙂