HTML CSS PYTHON
reklama

Daty w Pythonie

Daty i godziny w Pythonie nie są osobnym typem danych. Ale Python posiada wbudowany moduł do obsługi dat i godzin - DateTime.

Moduł DateTime zawiera klasy, które zawierają szereg metod obsługujących daty, godziny i przedziały czasowe, ogólnie służa do manipulowania datą i godziną.

Możemy użyć funkcji dir() , aby uzyskać listę zawierającą wszystkie atrybuty modułu:
Przykład:
import datetime
print(dir(datetime))
 
#wynik
['MAXYEAR', 'MINYEAR', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']
Spośród wszystkich wywołanych w funkcji dir() atrybutów modułu datetime, najczęściej używanymi są:

klasa datetime łączy informacje o dacie i godzinie.
klasa date zawiera tylko informacje o dacie (rok, miesiąc, dzień).
klasa time odnosi się do czasu niezależnego od dnia (godzina, minuta, sekunda, mikrosekunda).
klasa timedelta reprezentuje różnicę między dwiema datami lub godzinami.
klasa tzinfo – abstrakcyjna klasa do manipulowania informacjami o strefie czasowej.
Do pracy z czasem i datami w Pythonie musimy zaimportować moduł datetime:

Przykład:
import datetime

Możemy zaimportować od razu klasy modułu datetime:

Przykład:
from datetime import datetime, date, time, timedelta, tzinfo

Przykłady pisania kodu w poszczególnych klasach modułu 'datetime'

klasa datetime

Przykład 1: klasa 'datetime' w module datetime:
import datetime
 
datetime.datetime.now()
datetime.datetime(2023, 2, 17, 9, 48, 22, 774435)    #bieżąca data i godzina

klasa date

Przykład 1: klasa 'date' w module datetime:
from datetime import date
x=date(2023,2,17)          utworzenie zmiennej x i nadanie jej wartości 
print(x)
2023-02-17    #wynik
x.day
17            #wynik
x.month
2             #wynik
x.year
2023          #wynik
x.max
datetime.date(9999, 12, 31)       #wynik
x.min
datetime.date(1, 1, 1)            #wynik



Jeszcze jeden przykład, tym razem z wykorzystaniem wbudowanej metody 'today' w klasie 'date' modułu datetime:

Przykład 2
import datetime
 
x=datetime.date.today()
print(x)
2023-02-17    #wynik - aktualna data lokalna

Przykład z wykorzystaniem wbudowanej metody 'fromtimestamp' w klasie 'date' modułu datetime.
Metoda fromtimestamp() zwraca datę odpowiadającą określonemu znacznikowi czasu. Ten znacznik czasu obejmuje zakres od roku 1970 do roku 2038. W argumentach metody fromtimestamp() ustawiamy ilość sekund, które odmierzają czas od znacznika czasu tj. 1970 r.do zwróconego przez metodę znacznika czasu.

Przykład 3
from datetime import date
 
x=date.fromtimestamp(1357463585)
print(x)
2013-01-06   #wynik - metoda zwróciła datę od 1970-01-01 odliczając liczbę sekund podaną w argumencie metody 
             
klasa time
Klasa time w module datetime pozwala uzyskać aktualny czas a także pozwala uzyskać dostęp do poszczególnych składników obiektu czasu za pomocą odpowiednich atrybutów. W ten sposób można osobno uzyskać dostęp do bieżącej godziny, minuty, sekundy i mikrosekundy. Atrybutami klasy time są sekunda, minuta, godzina, mikrosekunda itp. Za pomocą obiektu czasu możemy przedstawić lokalną porę dnia:
Przykład 1
from datetime import time
x1=time()
print(x1)
00:00:00          #wynik
 
x2=time(20,36,34,345)
print(x2)
20:36:34.000345   #wynik
Wprzykładzie powyżej x1 i x2 są obiektami klasy time a time() jest konstruktorem klasy time.

W następnym przykładzie uzyskamy dostęp do poszczególnych atrybutów klasy time:
Przykład 2
from datetime import time
 
x=time(17,2,30)
x.hour
17        #wynik
x.minute
2         #wynik
x.second
30        #wynik
klasa timedelta
Klasa timedelta służy do obliczania różnic oraz mierzenia czasu trwania między dwiema datami i godzinami. Wynik może być dodatni lub ujemny.
Atrybutami klasy timedelta są: dni, tygodnie, godziny, minuty, sekundy, mikrosekundy, milisekundy.
Przykład 1
from datetime import timedelta
 
x=timedelta(days=30, hours=20, minutes=223)
y=timedelta(hours=224, minutes=674, seconds=6685)
z=x-y
print(z)
21 days, 2:37:35   #wynik
 
W obiekcie timedelta można uzyskać całkowitą liczbę sekund:
Przykład 1
from datetime import timedelta
x=timedelta(days=16000)
print(timedelta.total_seconds(x))
1382400000.0     #wynik
klasa tzinfo
Strefy czasowe na świecie definiowane są przesunięciami względem czasu UTC w zakresie od UTC-12:00 do UTC+14:00. Pythonie klasa tzinfo przechowuje informacje o strefach czasowych.
Klasa tzinfo w module datetime jest klasą abstrakcyjną, w związku z tym nie przyjmuje żadnych parametrów, nic nie zwraca, i żeby skorzystać z tej klasy, trzeba wszystkie metody abstrakcyjne zaimplementować, ​​instancja tej klasy nie powinna być tworzona bezpośrednio.
Instancja klasy tzinfo może zostać przekazana do konstruktorów obiektów klas datetime i time. Obiekty klas datetime i time postrzegają swoje atrybuty jako czas lokalny, a obiekt tzinfo obsługuje metody ujawniające przesunięcie czasu lokalnego w stosunku do UTC, nazwę strefy czasowej i przesunięcie DST, a wszystko to w stosunku do przekazanego im obiektu daty lub czasu.

Klasa tzinfo zawiera 4 metody:

- utcoffset(dt), 'dt' jest obiektem modułu datetime. Metoda ta zwraca obiekt reprezentujący przesunięcie czasu lokalnego względem UTC. Jeśli czas lokalny jest na wschód od UTC, jest dodatni a jeśli jest na zachód od UTC, jest ujemny;
- dst(dt)- zwraca obiekt reprezentujący czas letni lub zmianę czasu letniego. Jeśli informacje o czasie letnim nie są znane, zwraca None;
- tzname(dt) - zwraca nazwę strefy czasowej powiązanej z dt obiektem jako łańcuch znaków;
- fromutc(dt) - Zwraca nazwę strefy czasowej powiązanej z dt obiektem jako łańcuch znaków.
Tworzenie obiektów w module datetime
W Pythonie można tworzyć obiekty datetime zawierające dowolną wiarygodną datę i godzinę od roku 1 aż do roku 9999.
Przykład 1
import datetime
x=date(2023,2,19)
y=time(9,38,20)
 
print(x)
2023-02-19    #wynik
print(y)
09:38:20      #wynik
 
Inny przykład, wykorzystując klasę 'date' i tworząc dwa obiekty, z przypisaniem do jednego dzisiejszej daty i do drugiego daty naszych urodzin, możemy określić, ile dni minęło od naszych urodzin:
Przykład 1
import datetime
x=date(2023,2,19)
y=date(1982,4,4)
z=x-y
print(z)
14931 days, 0:00:00   #wynik
 
Formatowanie dat i godzin
Domyślny format dat i godzin w module datetime to „RRRR-MM-DD HH:MM:SS”.

Dzięki metodzie strftime() możemy zapisać datę i czas w dowolnym formacie, uzyskując zapis bardziej czytelny.
Metoda strftime() przyjmuje jeden parametr.
Przykład 1
import datetime
x=time(21,21,20)
print(x)
21:21:20    #wynik
 
x.strftime("%H")
'21'        #wynik
Główne kody formatowania:

%d :Dzień miesiąca w zapisie dziesiętnym z wypełnionym zerem.
%m :Miesiąc w notacji dziesiętnej z wypełnionym zerem.
%y :Dwie ostatnie cyfry roku w notacji dziesiętnej z wypełnieniem zerowym.
%Y :Cztery cyfry roku w zapisie dziesiętnym z wypełnionym zerem.
%H :W przypadku wyrażenia w notacji dziesiętnej z wypełnionym zerem (notacja 24-godzinna)
%I :W przypadku wyrażenia w notacji dziesiętnej z wypełnionym zerem (notacja 12-godzinna)
%M :Dla notacji dziesiętnej z wypełnionym zerem.
%S :Sekundy w notacji dziesiętnej z wypełnionym zerem.
%f :Mikrosekundy (6 cyfr) w zapisie dziesiętnym z wypełnionym 0.
%A :Nazwa dnia tygodnia dla danego locale
%a :Nazwa dnia dla lokalizacji (forma skrócona)
%B :Nazwa miesiąca lokalnego
%b :Nazwa miesiąca lokalnego (w formie skróconej)
%j :Dzień roku w zapisie dziesiętnym z wypełnieniem zerowym.
%U :Numer tygodnia w roku w zapisie dziesiętnym z wypełnieniem zerowym (tydzień zaczyna się w niedzielę)
%W :Numer tygodnia w roku w zapisie dziesiętnym z wypełnieniem zerowym (tydzień zaczyna się w poniedziałek)
Samouczek Pythona
reklama
reklama
Szkoła bananik.pl jest zoptymalizowana pod kątem uczenia się, testowania i szkolenia.
Przykłady są stale sprawdzane, aby uniknąć błędów, ale nie możemy zagwarantować pełnej poprawności wszystkich treści.
Korzystając z tej witryny, wyrażasz zgodę na przeczytanie i zaakceptowanie naszych warunków użytkowania, plików cookie i polityki prywatności.
© 2025 bananik.pl
Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej.Rozumiem