Tartalomjegyzék
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.