Ebben a cikkben megtanulod a dátumot és az időt a Pythonban manipulálni példák segítségével.
A Pythonnak van egy datetime nevű modulja, amely a dátumokkal és az időkkel dolgozik. Hozzunk létre néhány egyszerű programot a dátumhoz és az időhöz kapcsolódóan, mielőtt elmélyülnénk.
1. példa: Az aktuális dátum és idő lekérése
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
A program futtatásakor a kimenet valami hasonló lesz:
2018-12-19 09: 26: 03.478039
Itt importáltuk a datetime modult import datetime
utasítás használatával .
A datetime
modulban definiált osztályok egyike az datetime
osztály. Ezután now()
metódust használtunk egy datetime
objektum létrehozására, amely tartalmazza az aktuális helyi dátumot és időt.
2. példa: Az aktuális dátum beolvasása
import datetime date_object = datetime.date.today() print(date_object)
A program futtatásakor a kimenet valami hasonló lesz:
2018-12-19
Ebben a programban today()
az date
osztályban definiált metódust használtunk date
az aktuális helyi dátumot tartalmazó objektum lekérésére .
Mi van a dátumidőben?
A dir () függvénnyel használhatunk egy listát, amely tartalmazza a modul összes attribútumát.
import datetime print(dir(datetime))
A program futtatásakor a kimenet a következő lesz:
('MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', datetime ',' datetime_CAPI ',' time ',' timedelta ',' timezone ',' tzinfo ')
A datetime modul általánosan használt osztályai a következők:
- dátum osztály
- időosztály
- datetime osztály
- timedelta osztály
datetime.date osztály
Példányosíthatja az date
objektumokat az date
osztályból. A dátumobjektum dátumot jelent (év, hónap és nap).
3. példa: Dátumobjektum, amely egy dátumot képvisel
import datetime d = datetime.date(2019, 4, 13) print(d)
A program futtatásakor a kimenet a következő lesz:
2019-04-13
Ha kíváncsi, date()
a fenti példában az date
osztály konstruktora szerepel . A kivitelezőnek három érve van: év, hónap és nap.
Az a változó date
objektum.
Csak date
osztályt importálhatunk a datetime
modulból. Itt van, hogyan:
from datetime import date a = date(2019, 4, 13) print(a)
4. példa: Az aktuális dátum beolvasása
Az date
aktuális dátumot tartalmazó objektumot létrehozhatja egy elnevezett osztálymódszer használatával today()
. Itt van, hogyan:
from datetime import date today = date.today() print("Current date =", today)
5. példa: Dátum lekérése időbélyegből
date
Időbélyegből objektumokat is létrehozhatunk . A Unix időbélyeg a másodpercek száma egy adott dátum és az UTC szerint 1970. január 1. között. Az időbélyeget a fromtimestamp()
módszerrel konvertálhatja dátumra .
from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp)
A program futtatásakor a kimenet a következő lesz:
Dátum = 2012-01-11
6. példa: Nyomtassa ki a mai évet, hónapot és napot
Könnyen megkaphatjuk az évet, hónapot, napot, a hét napját stb. Itt van, hogyan:
from datetime import date # date object of today's date today = date.today() print("Current year:", today.year) print("Current month:", today.month) print("Current day:", today.day)
datetime.time
Az time
osztályból példányosított időobjektum a helyi időt reprezentálja.
7. példa: Az idő ábrázolására szolgáló objektum
from datetime import time # time(hour = 0, minute = 0, second = 0) a = time() print("a =", a) # time(hour, minute and second) b = time(11, 34, 56) print("b =", b) # time(hour, minute and second) c = time(hour = 11, minute = 34, second = 56) print("c =", c) # time(hour, minute, second, microsecond) d = time(11, 34, 56, 234566) print("d =", d)
A program futtatásakor a kimenet a következő lesz:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11: 34: 56.234566
8. példa: Óra, perc, másodperc és mikroszekundum nyomtatása
Miután létrehozott egy time
objektumot, könnyen kinyomtathatja annak attribútumait, például órát, percet stb.
from datetime import time a = time(11, 34, 56) print("hour =", a.hour) print("minute =", a.minute) print("second =", a.second) print("microsecond =", a.microsecond)
A példa futtatásakor a kimenet a következő lesz:
óra = 11 perc = 34 másodperc = 56 mikroszekundum = 0
Figyelje meg, hogy nem teltünk át mikroszekundumos argumentumon. Ezért az alapértelmezett értéke 0
kinyomtatásra kerül.
datetime.datetime
The datetime
module has a class named dateclass
that can contain information from both date and time objects.
Example 9: Python datetime object
from datetime import datetime #datetime(year, month, day) a = datetime(2018, 11, 28) print(a) # datetime(year, month, day, hour, minute, second, microsecond) b = datetime(2017, 11, 28, 23, 55, 59, 342380) print(b)
When you run the program, the output will be:
2018-11-28 00:00:00 2017-11-28 23:55:59.342380
The first three arguments year, month and day in the datetime()
constructor are mandatory.
Example 10: Print year, month, hour, minute and timestamp
from datetime import datetime a = datetime(2017, 11, 28, 23, 55, 59, 342380) print("year =", a.year) print("month =", a.month) print("hour =", a.hour) print("minute =", a.minute) print("timestamp =", a.timestamp())
When you run the program, the output will be:
year = 2017 month = 11 day = 28 hour = 23 minute = 55 timestamp = 1511913359.34238
datetime.timedelta
A timedelta
object represents the difference between two dates or times.
Example 11: Difference between two dates and times
from datetime import datetime, date t1 = date(year = 2018, month = 7, day = 12) t2 = date(year = 2017, month = 12, day = 23) t3 = t1 - t2 print("t3 =", t3) t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33) t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13) t6 = t4 - t5 print("t6 =", t6) print("type of t3 =", type(t3)) print("type of t6 =", type(t6))
When you run the program, the output will be:
t3 = 201 days, 0:00:00 t6 = -333 days, 1:14:20 type of t3 = type of t6 =
Notice, both t3 and t6 are of type.
Example 12: Difference between two timedelta objects
from datetime import timedelta t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33) t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54) t3 = t1 - t2 print("t3 =", t3)
When you run the program, the output will be:
t3 = 14 days, 13:55:39
Here, we have created two timedelta
objects t1 and t2, and their difference is printed on the screen.
Example 13: Printing negative timedelta object
from datetime import timedelta t1 = timedelta(seconds = 33) t2 = timedelta(seconds = 54) t3 = t1 - t2 print("t3 =", t3) print("t3 =", abs(t3))
When you run the program, the output will be:
t3 = -1 day, 23:59:39 t3 = 0:00:21
Example 14: Time duration in seconds
You can get the total number of seconds in a timedelta object using total_seconds()
method.
from datetime import timedelta t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423) print("total seconds =", t.total_seconds())
When you run the program, the output will be:
total seconds = 435633.233423
You can also find sum of two dates and times using +
operator. Also, you can multiply and divide a timedelta
object by integers and floats.
Python format datetime
The way date and time is represented may be different in different places, organizations etc. It's more common to use mm/dd/yyyy
in the US, whereas dd/mm/yyyy
is more common in the UK.
Python has strftime()
and strptime()
methods to handle this.
Python strftime() - datetime object to string
The strftime()
method is defined under classes date
, datetime
and time
. The method creates a formatted string from a given date
, datetime
or time
object.
Example 15: Format date using strftime()
from datetime import datetime # current date and time now = datetime.now() t = now.strftime("%H:%M:%S") print("time:", t) s1 = now.strftime("%m/%d/%Y, %H:%M:%S") # mm/dd/YY H:M:S format print("s1:", s1) s2 = now.strftime("%d/%m/%Y, %H:%M:%S") # dd/mm/YY H:M:S format print("s2:", s2)
When you run the program, the output will be something like:
time: 04:34:52 s1: 12/26/2018, 04:34:52 s2: 26/12/2018, 04:34:52
Here, %Y
, %m
, %d
, %H
etc. are format codes. The strftime()
method takes one or more format codes and returns a formatted string based on it.
In the above program, t, s1 and s2 are strings.
%Y
- year (0001,… , 2018, 2019,… , 9999)%m
- month (01, 02,… , 11, 12)%d
- day (01, 02,… , 30, 31)%H
- hour (00, 01,… , 22, 23%M
- minute (00, 01,… , 58, 59)%S
- second (00, 01,… , 58, 59)
To learn more about strftime()
and format codes, visit: Python strftime().
Python strptime() - string to datetime
The strptime()
method creates a datetime
object from a given string (representing date and time).
Example 16: strptime()
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object)
When you run the program, the output will be:
date_string = 21 June, 2018 date_object = 2018-06-21 00:00:00
The strptime()
method takes two arguments:
- a dátumot és az időt ábrázoló karakterlánc
- az első argumentumnak megfelelő formátumkód
Egyébként a %d
, %B
és a %Y
formátumkódokat a napra, a hónapra (teljes név) és az évre használják.
További információkért látogasson el a Python strptime () oldalra.
Időzóna kezelése Pythonban
Tegyük fel, hogy Ön egy projekten dolgozik, és meg kell jelenítenie a dátumot és az időt az időzónájuk alapján. Ahelyett, hogy saját maga próbálná kezelni az időzónát, javasoljuk, hogy használjon egy harmadik féltől származó pytZ modult.
from datetime import datetime import pytz local = datetime.now() print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S")) tz_NY = pytz.timezone('America/New_York') datetime_NY = datetime.now(tz_NY) print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S")) tz_London = pytz.timezone('Europe/London') datetime_London = datetime.now(tz_London) print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S"))
A program futtatásakor a kimenet valami hasonló lesz:
Helyi idő: 2018-12-20 13: 10: 44.260462 Amerika / New_York idő: 2018-12-20 13: 10: 44.260462 Európa / London idő: 2018-12-20 13: 10: 44.260462
Itt a datetime_NY és a date time_London olyan dátum-objektumok, amelyek a megfelelő időzónájuk aktuális dátumát és idejét tartalmazzák.