Sztring konvertálása datetime vagy time objektummá Pythonban

Sztring konvertálása datetime vagy time objektummá Pythonban

A Python programozás során gyakran találkozunk olyan szituációkkal, ahol egy sztringet kell datetime vagy time objektummá alakítanunk. Például egy fájlból beolvasott dátumot vagy időpontot szeretnénk feldolgozni, vagy egy felhasználói inputból kapott értéket szeretnénk dátumformátumban tárolni. A Python beépített datetime modulja többféle funkciót kínál a sztring-datetime konverziókhoz.

Miért fontos a datetime objektumok használata?

A datetime objektumok a Pythonban lehetővé teszik a dátumok és idők hatékony és pontos kezelését. A sztring formátumú dátumok és idők nehezen kezelhetők, mivel nem rendelkeznek a datetime objektumok által nyújtott műveletekkel. A datetime objektumokkal például könnyedén:

* Kivonhatunk vagy összeadhatunk időpontokat: Kiszámolhatjuk a két dátum közötti különbséget, vagy hozzáadhatunk napot, órát, percet egy adott időponthoz.
* Formázhatjuk a dátumot és időt: Számos formátumban megjeleníthetjük a datetime objektumokat, például „YYYY-MM-DD”, „DD.MM.YYYY HH:MM:SS”, vagy más személyre szabott formátumban.
* Összehasonlíthatjuk a dátumokat és időpontokat: Meg tudjuk állapítani, hogy egy dátum korábbi vagy későbbi-e egy másik dátumnál.

A datetime modul alapja

A Pythonban a datetime modul a datetime objektumok kezeléséhez szükséges funkciókat tartalmazza. A modul legfontosabb osztályai:

* datetime: Ezzel az osztálysal reprezentálhatunk dátumot és időt együttesen.
* date: Kiválasztjuk vele csak a dátumot (év, hónap, nap).
* time: Csak az időt tárolja (óra, perc, másodperc, mikroszekundum).

A datetime modul importálása:

python
import datetime

Sztring konvertálása datetime objektummá

A datetime.datetime.strptime() függvényt használhatjuk egy sztringből datetime objektumot létrehozni. Ez a függvény két paramétert fogad:

* sztring: A feldolgozandó sztring.
* formátum: A sztringben szereplő dátum és idő formátumát leíró formátumkód.

A formátumkód a következő karakterekből áll:

| Kód | Jelentés | Példa |
|—|—|—|
| %Y | Év (négy számjegy) | 2023 |
| %m | Hónap (két számjegy) | 09 |
| %d | Nap (két számjegy) | 28 |
| %H | Óra (24 órás formátum) | 15 |
| %M | Perc | 30 |
| %S | Másodperc | 45 |
| %j | Évben a nap sorszáma | 271 |
| %w | Hét napja (0: hétfő, 6: vasárnap) | 4 |
| %A | Hét napja (teljes név) | Thursday |
| %B | Hónap (teljes név) | September |

Példa:

python
import datetime

sztring = "2023-09-28 15:30:45"
formátum = "%Y-%m-%d %H:%M:%S"

datetime_obj = datetime.datetime.strptime(sztring, formátum)

print(datetime_obj)

Kimenet: 2023-09-28 15:30:45

Sztring konvertálása time objektummá

A datetime.time.strptime() függvényt használhatjuk egy sztringből time objektumot létrehozni. A formátumkód ebben az esetben is ugyanaz, mint a datetime objektumoknál, de csak az időt leíró részek használhatók.

Példa:

python
import datetime

sztring = "15:30:45"
formátum = "%H:%M:%S"

time_obj = datetime.time.strptime(sztring, formátum)

print(time_obj)

Kimenet: 15:30:45

A strftime() függvény

A datetime.datetime.strftime() függvényt használhatjuk egy datetime objektumot szöveggé (sztringgé) alakítani. A formátumkód ebben az esetben is ugyanaz, mint a strptime() függvénynél.

Példa:

python
import datetime

datetime_obj = datetime.datetime(2023, 9, 28, 15, 30, 45)

sztring = datetime_obj.strftime("%Y-%m-%d %H:%M:%S")

print(sztring)

Kimenet: 2023-09-28 15:30:45

Sztring konvertálása dátumra

Ha csak dátumot kell konvertálnunk, a datetime.date.fromisoformat() és a datetime.date.strptime() függvényeket használhatjuk.

fromisoformat() függvény:

python
import datetime

sztring = "2023-09-28"

date_obj = datetime.date.fromisoformat(sztring)

print(date_obj)

Kimenet: 2023-09-28

strptime() függvény:

python
import datetime

sztring = "2023-09-28"
formátum = "%Y-%m-%d"

date_obj = datetime.datetime.strptime(sztring, formátum).date()

print(date_obj)

Kimenet: 2023-09-28

Sztring konvertálása időre

Ha csak időt kell konvertálnunk, a datetime.time.fromisoformat() és a datetime.time.strptime() függvényeket használhatjuk.

fromisoformat() függvény:

python
import datetime

sztring = "15:30:45"

time_obj = datetime.time.fromisoformat(sztring)

print(time_obj)

Kimenet: 15:30:45

strptime() függvény:

python
import datetime

sztring = "15:30:45"
formátum = "%H:%M:%S"

time_obj = datetime.datetime.strptime(sztring, formátum).time()

print(time_obj)

Kimenet: 15:30:45

További hasznos funkciók

A datetime modul számos további hasznos funkciót kínál a dátumok és idők kezeléséhez:

* datetime.date.today(): A mai dátumot adja vissza datetime.date objektumként.
* datetime.datetime.now(): A jelenlegi dátumot és időt adja vissza datetime.datetime objektumként.
* datetime.timedelta: Ezzel az osztálysal időtartamot reprezentálhatunk (pl. 2 nap, 5 óra, 10 perc).
* datetime.datetime.utcnow(): A jelenlegi UTC időt adja vissza datetime.datetime objektumként.

Következtetés

A sztringből datetime vagy time objektumba való konvertálás a Pythonban a datetime modul használatával egyszerűen elvégezhető. A strptime() és a strftime() függvények segítségével könnyedén kezelhetjük a különböző formátumú dátumokat és időket. A datetime objektumok lehetővé teszik a dátumok és idők hatékony és pontos kezelését, ami számos programozási feladatban hasznos lehet.

Gyakran Ismételt Kérdések (GYIK)

1. Milyen formátumkód-karakterek léteznek a strptime() és strftime() függvényekben?

A formátumkód-karakterek teljes listája a Python dokumentációban található.

2. Hogyan tudom meghatározni egy sztringben szereplő dátum formátumát?

Ha nem biztos a sztring formátumában, a datetime.datetime.strptime() függvényt használhatja egy try-except blokkban. Ha a formátum helytelen, a ValueError kivételt fogja dobni.

3. Hogyan lehet dátumot hozzáadni egy datetime objektumhoz?

A datetime.timedelta osztályt használhatja a dátumokhoz és időpontokhoz való hozzáadáshoz. Például:

python
import datetime

datetime_obj = datetime.datetime(2023, 9, 28)

egy_het = datetime.timedelta(days=7)

uj_datum = datetime_obj + egy_het

print(uj_datum)

Kimenet: 2023-10-05

4. Hogyan tudom kiszámolni a két dátum közötti különbséget?

Kivonhatja két datetime objektumot egymástól, és kap egy datetime.timedelta objektumot, amely a különbséget reprezentálja. Például:

python
import datetime

datum1 = datetime.datetime(2023, 9, 28)
datum2 = datetime.datetime(2023, 10, 5)

kulonbseg = datum2 - datum1

print(kulonbseg)

Kimenet: 7 days, 0:00:00

5. Hogyan konvertálhatok egy időpont-sztringet a helyi időzónába?

A datetime.datetime.strptime() függvénnyel létrehozhat egy datetime.datetime objektumot, majd a datetime.datetime.astimezone() függvénnyel megkaphatja a helyi időzónához konvertált objektumot.

6. Hogyan adhatok hozzá egy időzónát egy datetime objektumhoz?

Használhatja a datetime.datetime.replace() függvényt egy tzinfo argumentummal, amely az időzónát reprezentálja.

7. Hogyan konvertálhatok egy datetime objektumot Unix időbélyegzékké?

A datetime.datetime.timestamp() függvény használatával.

8. Hogyan kaphatok meg egy nap nevét egy dátum alapján?

Használja a datetime.datetime.strftime() függvényt %A formátumkód-karakterrel.

9. Hogyan konvertálhatok egy datetime.time objektumot datetime.datetime objektummá?

A datetime.datetime.combine() függvényt alkalmazhatja.

10. Milyen további hasznos források vannak a Python datetime modul használatához?

A Python dokumentáció](https://docs.python.org/3/library/datetime.html) és a [Real Python webhely hasznos forrásokat kínál.