Moduł datetime w Pythonie

W Pythonie data i godzina nie są własnymi typami danych, ale modułem o nazwie DataGodzina w Pythonie można zaimportować, aby pracować zarówno z datą, jak i godziną. Moduł DateTime w Pythonie jest wbudowany w Python, więc nie ma potrzeby instalowania go z zewnątrz.

W tym artykule zastanowimy się, jak to zrobić Data i godzina w Pythonie działa i jakie są główne klasy modułu DateTime w Pythonie.

Spis treści

Moduł DateTime w Pythonie

Data i godzina Pythona moduł dostarcza klas do pracy z datą i czasem. Klasy te udostępniają kilka funkcji do obsługi dat, godzin i przedziałów czasowych. Date i DateTime są obiektami w Pythonie, więc manipulując nimi, manipulujesz obiektami, a nie ciągami znaków czy znacznikami czasu.

Moduł DateTime jest podzielony na 6 głównych klas –

  • data – Wyidealizowana data naiwna, przy założeniu, że obecny kalendarz gregoriański zawsze obowiązywał i zawsze będzie obowiązywał. Jego atrybutami są rok, miesiąc i dzień. możesz się odwołać – Python DateTime – klasa daty
  • czas – Wyidealizowany czas, niezależny od konkretnego dnia, przy założeniu, że każdy dzień ma dokładnie 24*60*60 sekund. Jego atrybuty to godzina, minuta, sekunda, mikrosekunda i tzinfo. Możesz odwołać się do – Python DateTime – klasa czasu
  • data-godzina – Jest to kombinacja daty i godziny wraz z atrybutami rok, miesiąc, dzień, godzina, minuta, sekunda, mikrosekunda i tzinfo. Możesz odwołać się do – Python DateTime – klasa DateTime
  • delta czasu – Czas trwania wyrażający różnicę między dwiema instancjami daty, godziny lub daty/godziny z rozdzielczością mikrosekundową. Możesz odwołać się do – Python DateTime – klasa Timedelta
  • tzinfo – Udostępnia obiekty zawierające informacje o strefie czasowej. Możesz odwołać się do – Python – datetime.tzinfo()
  • strefa czasowa – Klasa, która implementuje abstrakcyjną klasę bazową tzinfo jako stałe przesunięcie w stosunku do czasu UTC (nowość w wersji 3.2). Możesz odwołać się do – Obsługa strefy czasowej w Pythonie

Klasa daty w Pythonie

Klasa date służy do tworzenia instancji obiektów daty w Pythonie. Kiedy tworzona jest instancja obiektu tej klasy, reprezentuje on datę w formacie RRRR-MM-DD . Konstruktor tej klasy potrzebuje trzech obowiązkowych argumentów: rok, miesiąc i data.

Składnia klasy Date w Pythonie

class datetime.date(year, month, day) 

Argumenty muszą należeć do następującego zakresu –

  • MINYEAR <= rok <= MAXYEAR
  • 1 <= miesiąc <= 12
  • 1 <= dzień <= liczba dni w danym miesiącu i roku

Notatka – Jeśli argument nie jest liczbą całkowitą, zgłosi błąd TypeError, a jeśli jest poza zakresem, zostanie zgłoszony błąd ValueError.

Obiekt Date reprezentujący dane w Pythonie

Inicjowanie konstruktora i przekazywanie argumentów w formacie rok, miesiąc i data.

Python3




# Python program to> # demonstrate date class> # import the date class> from> datetime> import> date> my_date> => date(> 1996> ,> 12> ,> 11> )> print> (> 'Date passed as argument is'> , my_date)> # Uncommenting my_date = date(1996, 12, 39)> # will raise an ValueError as it is> # outside range> # uncommenting my_date = date('1996', 12, 11)> # will raise a TypeError as a string is> # passed instead of integer>

Wyjście:

Date passed as argument is 1996-12-11 
Traceback (most recent call last):  File '/home/ccabfb570d9bd1dcd11dc4fe55fd6ba2.py', line 14, in   my_date = date(1996, 12, 39) ValueError: day is out of range for month  Traceback (most recent call last):  File '/home/53b974e10651f1853eee3c004b48c481.py', line 18, in   my_date = date('1996', 12, 11) TypeError: an integer is required (got type str) 

Uzyskaj aktualną datę

Aby zwrócić bieżącą lokalną datę dzisiaj (), używana jest funkcja klasy date. Funkcja Today() ma kilka atrybutów (rok, miesiąc i dzień). Można je drukować indywidualnie.

Python3




# Python program to> # print current date> from> datetime> import> date> # calling the today> # function of date class> today> => date.today()> print> (> 'Today's date is'> , today)>

Wyjście

Today's date is 2021-08-19 

Uzyskaj dzisiejszy rok, miesiąc i datę

Atrybuty roku, miesiąca i daty możemy uzyskać z obiektu date, korzystając z atrybutu roku, miesiąca i daty klasy date.

Python3




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

Wyjście

Current year: 2021 Current month: 8 Current day: 19 

Pobierz datę ze znacznika czasu

Możemy tworzyć obiekty daty na podstawie znaczników czasu y= za pomocą metody fromtimestamp(). Znacznik czasu to liczba sekund od 1 stycznia 1970 r. w czasie UTC do określonej daty.

Python3




from> datetime> import> datetime> # Getting Datetime from timestamp> date_time> => datetime.fromtimestamp(> 1887639468> )> print> (> 'Datetime from timestamp:'> , date_time)>

Wyjście

Datetime from timestamp: 2029-10-25 16:17:48 

Konwertuj datę na ciąg

Możemy przekonwertować obiekt daty na reprezentację łańcuchową za pomocą dwóch funkcji isoformat() i strftime().

Python3




from> datetime> import> date> > # calling the today> # function of date class> today> => date.today()> > # Converting the date to the string> Str> => date.isoformat(today)> print> (> 'String Representation'> ,> Str> )> print> (> type> (> Str> ))>

Wyjście

String Representation 2021-08-19 

Lista metod klas Date

Nazwa funkcji

Opis

ctime() Zwróć ciąg reprezentujący datę
zizokalendarza() Zwraca datę odpowiadającą kalendarzowi ISO
zizoformatu() Zwraca obiekt daty z ciągu znaków reprezentującego datę
odporządkowy() Zwraca obiekt daty z proleptycznej liczby porządkowej gregoriańskiej, gdzie 1 stycznia roku 1 ma liczbę porządkową 1
od znacznika czasu() Zwraca obiekt daty ze znacznika czasu POSIX
izokalendarz() Zwraca krotkę roku, tygodnia i dnia tygodnia
izoformat() Zwraca ciąg reprezentujący datę
istydzień() Zwraca dzień tygodnia jako liczbę całkowitą, gdzie poniedziałek to 1, a niedziela to 7
zastępować() Zmienia wartość obiektu daty o podanym parametrze
strftime() Zwraca ciąg znaków reprezentujący datę w podanym formacie
harmonogram() Zwraca obiekt typu time.struct_time
Dzisiaj() Zwraca bieżącą datę lokalną
nadzwyczajny() Zwróć proleptyczną liczbę porządkową gregoriańską daty, gdzie 1 stycznia roku 1 ma liczbę porządkową 1
dzień powszedni() Zwraca dzień tygodnia jako liczbę całkowitą, gdzie poniedziałek wynosi 0, a niedziela wynosi 6

Klasa czasu w Pythonie

Klasa time tworzy obiekt time, który reprezentuje czas lokalny, niezależny od dowolnego dnia.

Składnia konstruktora:

klasa datetime.time(godzina=0, minuta=0, sekunda=0, mikrosekunda=0, tzinfo=brak, *, złożenie=0)

Wszystkie argumenty są opcjonalne. tzinfo może mieć wartość Brak, w przeciwnym razie wszystkie atrybuty muszą być liczbami całkowitymi z następującego zakresu –

  • 0 <= godzina < 24
  • 0 <= minuta < 60
  • 0 <= sekunda < 60
  • 0 <= mikrosekunda < 1000000
  • złożyć [0, 1]

Przykład 1: Obiekt Time reprezentujący czas w Pythonie

Python3




# Python program to> # demonstrate time class> from> datetime> import> time> # calling the constructor> my_time> => time(> 13> ,> 24> ,> 56> )> print> (> 'Entered time'> , my_time)> # calling constructor with 1> # argument> my_time> => time(minute> => 12> )> print> (> ' Time with one argument'> , my_time)> # Calling constructor with> # 0 argument> my_time> => time()> print> (> ' Time without argument'> , my_time)> # Uncommenting time(hour = 26)> # will rase an ValueError as> # it is out of range> # uncommenting time(hour ='23')> # will raise TypeError as> # string is passed instead of int>

Wyjście:

Entered time 13:24:56  Time with one argument 00:12:00  Time without argument 00:00:00 
Traceback (most recent call last):  File '/home/95ff83138a1b3e67731e57ec6dddef25.py', line 21, in   print(time(hour=26)) ValueError: hour must be in 0..23  Traceback (most recent call last):  File '/home/fcee9ba5615b0b74fc3ba39ec9a789fd.py', line 21, in   print(time(hour='23')) TypeError: an integer is required (got type str) 

Przykład 2: Uzyskaj godziny, minuty, sekundy i mikrosekundy

Po utworzeniu obiektu czasu jego atrybuty można także wydrukować osobno.

Python3




from> datetime> import> time> Time> => time(> 11> ,> 34> ,> 56> )> print> (> 'hour ='> , Time.hour)> print> (> 'minute ='> , Time.minute)> print> (> 'second ='> , Time.second)> print> (> 'microsecond ='> , Time.microsecond)>

Wyjście:

hour = 11 minute = 34 second = 56 microsecond = 0 

Przykład 3: Konwertuj obiekt Time na String

Obiekt czasu możemy przekonwertować na ciąg znaków za pomocą metody isoformat().

Python3




from> datetime> import> time> # Creating Time object> Time> => time(> 12> ,> 24> ,> 36> ,> 1212> )> # Converting Time object to string> Str> => Time.isoformat()> print> (> 'String Representation:'> ,> Str> )> print> (> type> (> Str> ))>

Wyjście

String Representation: 12:24:36.001212 

Lista metod klasy Time

Nazwa funkcji

Opis

dst() Zwraca tzinfo.dst() to tzinfo nie jest None
zizoformatu() Zwraca obiekt czasu z ciągu znaków reprezentującego czas
izoformat() Zwraca ciąg reprezentujący czas z obiektu time
zastępować() Zmienia wartość obiektu time o podanym parametrze
strftime() Zwraca ciąg znaków reprezentujący czas w podanym formacie
znaczy() Zwraca tzinfo.tzname() to tzinfo nie jest None
utcoffset() Zwraca tzinfo.utcffsets() to tzinfo nie jest None

Klasa Datetime w Pythonie

The Klasa DateTime zawiera informacje o dacie i godzinie. Podobnie jak obiekt daty, datetime zakłada bieżący kalendarz gregoriański rozszerzony w obu kierunkach; podobnie jak obiekt czasowy, datetime zakłada, że ​​każdy dzień ma dokładnie 3600*24 sekund.

Składnia konstruktora:

klasa datetime.datetime(rok, miesiąc, dzień, godzina=0, minuta=0, sekunda=0, mikrosekunda=0, tzinfo=Brak, *, złożenie=0)

Argumenty roku, miesiąca i dnia są obowiązkowe. tzinfo może mieć wartość Brak, pozostałe wszystkie atrybuty muszą być liczbą całkowitą z następującego zakresu –

  • MINYEAR <= rok <= MAXYEAR
  • 1 <= miesiąc <= 12
  • 1 <= dzień <= liczba dni w danym miesiącu i roku
  • 0 <= godzina < 24
  • 0 <= minuta < 60
  • 0 <= sekunda < 60
  • 0 <= mikrosekunda < 1000000
  • złożyć [0, 1]

Notatka – Przekazanie argumentu innego niż liczba całkowita spowoduje wystąpienie błędu TypeError, a przekazanie argumentów spoza zakresu spowoduje wystąpienie błędu ValueError.

Obiekt DateTime reprezentujący DateTime w Pythonie

Python3




# Python program to> # demonstrate datetime object> from> datetime> import> datetime> # Initializing constructor> a> => datetime(> 1999> ,> 12> ,> 12> )> print> (a)> # Initializing constructor> # with time parameters as well> a> => datetime(> 1999> ,> 12> ,> 12> ,> 12> ,> 12> ,> 12> ,> 342380> )> print> (a)>

Wyjście:

1999-12-12 00:00:00 1999-12-12 12:12:12.342380 

Uzyskaj rok, miesiąc, godzinę, minutę i sygnaturę czasową

Po utworzeniu obiektu DateTime jego atrybuty można także wydrukować osobno.

Python3




from> datetime> import> datetime> a> => datetime(> 1999> ,> 12> ,> 12> ,> 12> ,> 12> ,> 12> )> print> (> 'year ='> , a.year)> print> (> 'month ='> , a.month)> print> (> 'hour ='> , a.hour)> print> (> 'minute ='> , a.minute)> print> (> 'timestamp ='> , a.timestamp())>

Wyjście:

year = 1999 month = 12 hour = 12 minute = 12 timestamp = 945000732.0 

Aktualna data i godzina

Bieżącą datę i godzinę można wydrukować za pomocą funkcji Datetime.now(). funkcja now() zwraca bieżącą lokalną datę i godzinę.

Python3




from> datetime> import> datetime> # Calling now() function> today> => datetime.now()> print> (> 'Current date and time is'> , today)>

Wyjście:

Current date and time is 2019-10-25 11:12:11.289834 

Konwertuj datę i godzinę Pythona na ciąg

Możemy przekonwertować Datetime na ciąg w Pythonie za pomocą datagodzina.strfgodzina i metody datetime.isoformat.

Python3




from> datetime> import> datetime as dt> # Getting current date and time> now> => dt.now()> string> => dt.isoformat(now)> print> (string)> print> (> type> (string))>

Wyjście

2021-08-19T18:13:25.346259 

Lista metod klas Datetime

Nazwa funkcji

Opis

strefa czasowa() Zwraca obiekt DateTime zawierający informacje o strefie czasowej.
łączyć() Łączy obiekty daty i godziny i zwraca obiekt DateTime
ctime() Zwraca ciąg znaków reprezentujący datę i godzinę
data() Zwróć obiekt klasy Date
zizoformatu() Zwraca obiekt typu datetime na podstawie ciągu znaków reprezentującego datę i godzinę
odporządkowy() Zwraca obiekt daty z proleptycznej liczby porządkowej gregoriańskiej, gdzie 1 stycznia roku 1 ma liczbę porządkową 1. Godzina, minuta, sekunda i mikrosekunda wynoszą 0
od znacznika czasu() Zwróć datę i godzinę ze znacznika czasu POSIX
izokalendarz() Zwraca krotkę roku, tygodnia i dnia tygodnia
izoformat() Zwraca ciąg reprezentujący datę i godzinę
istydzień() Zwraca dzień tygodnia jako liczbę całkowitą, gdzie poniedziałek to 1, a niedziela to 7
Teraz() Zwraca bieżącą lokalną datę i godzinę z parametrem tz
zastępować() Zmienia określone atrybuty obiektu DateTime
strftime() Zwraca ciąg znaków reprezentujący obiekt DateTime w podanym formacie
strptime() Zwraca obiekt DateTime odpowiadający ciągowi daty
czas() Zwróć obiekt klasy Time
harmonogram() Zwraca obiekt typu time.struct_time
czas() Zwróć obiekt klasy Time
Dzisiaj() Zwróć lokalną datę i godzinę z tzinfo jako Brak
nadzwyczajny() Zwróć proleptyczną liczbę porządkową gregoriańską daty, gdzie 1 stycznia roku 1 ma liczbę porządkową 1
znaczy() Zwraca nazwę strefy czasowej
utcfromtimestamp() Zwróć UTC ze znacznika czasu POSIX
utcoffset() Zwraca przesunięcie czasu UTC
ukryj() Zwróć bieżącą datę i godzinę UTC
dzień powszedni() Zwraca dzień tygodnia jako liczbę całkowitą, gdzie poniedziałek wynosi 0, a niedziela wynosi 6

Klasa Timedelta w Pythonie

Klasa timedelta w Pythonie służy do obliczania różnic w datach, a także może być używana do manipulacji datami w Pythonie. Jest to jeden z najłatwiejszych sposobów manipulacji datami.

Składnia konstruktora:

klasa datetime.timedelta(dni=0, sekundy=0, mikrosekundy=0, milisekundy=0, minuty=0, godziny=0, tygodnie=0)
Zwroty: Data

Dodaj dni do obiektu DateTime

Demonstracja funkcji timedelta

Python3




from> datetime> import> datetime, timedelta> # Using current time> ini_time_for_now> => datetime.now()> # printing initial_date> print> (> 'initial_date'> ,> str> (ini_time_for_now))> # Calculating future dates> # for two years> future_date_after_2yrs> => ini_time_for_now> +> timedelta(days> => 730> )> future_date_after_2days> => ini_time_for_now> +> timedelta(days> => 2> )> # printing calculated future_dates> print> (> 'future_date_after_2yrs:'> ,> str> (future_date_after_2yrs))> print> (> 'future_date_after_2days:'> ,> str> (future_date_after_2days))>

Wyjście:

initial_date 2019-10-25 12:01:01.227848 future_date_after_2yrs: 2021-10-24 12:01:01.227848 future_date_after_2days: 2019-10-27 12:01:01.227848 

Różnica między dwiema datami i godzinami

Za pomocą tej klasy można również znaleźć różnice w datach i godzinach.

Python3




# Timedelta function demonstration> from> datetime> import> datetime, timedelta> # Using current time> ini_time_for_now> => datetime.now()> # printing initial_date> print> (> 'initial_date'> ,> str> (ini_time_for_now))> # Some another datetime> new_final_time> => ini_time_for_now> +> > > timedelta(days> => 2> )> # printing new final_date> print> (> 'new_final_time'> ,> str> (new_final_time))> # printing calculated past_dates> print> (> 'Time difference:'> ,> str> (new_final_time> -> > ini_time_for_now))>

Wyjście:

initial_date 2019-10-25 12:02:32.799814 new_final_time 2019-10-27 12:02:32.799814 Time difference: 2 days, 0:00:00 

Operacje obsługiwane przez klasę Timedelta

Operator

Opis

Dodatek (+) Dodaje i zwraca dwa obiekty timedelta
Odejmowanie (-) Odejmuje i zwraca dwa obiekty timedelta
Mnożenie (*) Mnoży obiekt timedelta przez float lub int
Dział (/) Dzieli obiekt timedelta za pomocą float lub int
Podział piętra (//) Dzieli obiekt timedelta przez float lub int i zwraca int wartości minimalnej wyniku
Moduł (%) Dzieli dwa obiekty timedelta i zwraca resztę
+(różnica czasu) Zwraca ten sam obiekt timedelta
-(różnica czasu) Zwraca wynik -1*timedelta
abs (delta czasu) Zwraca +(timedelta), jeśli timedelta.days> 1=0 w przeciwnym razie zwraca -(timedelta)
str(timedelta) Zwraca ciąg znaków w postaci (+/-) dzień[s], GG:MM:SS.UUUUUU
repr(timedelta) Zwraca reprezentację ciągu w postaci wywołania konstruktora

Sformatuj DateTime w Pythonie

Formatowanie DateTime może być bardzo potrzebne, ponieważ reprezentacja daty może różnić się w zależności od miejsca. W niektórych krajach może to być rrrr-mm-dd, a w innych może to być dd-mm-rrrr. Aby sformatować Python Datetime, można użyć funkcji strptime i strftime.

Python Datetime strftime

Metoda strftime() konwertuje podaną datę, godzinę lub obiekt DateTime na ciąg znaków reprezentujący dany format.

Format daty i godziny w Pythonie

Program w języku Python demonstrujący funkcję strftime().

Python3




from> datetime> import> datetime as dt> # Getting current date and time> now> => dt.now()> print> (> 'Without formatting'> , now)> # Example 1> s> => now.strftime(> '%A %m %-Y'> )> print> (> ' Example 1:'> , s)> # Example 2> s> => now.strftime(> '%a %-m %y'> )> print> (> ' Example 2:'> , s)> # Example 3> s> => now.strftime(> '%-I %p %S'> )> print> (> ' Example 3:'> , s)> # Example 4> s> => now.strftime(> '%H:%M:%S'> )> print> (> ' Example 4:'> , s)>

Wyjście

Without formatting 2021-08-19 18:16:25.881661 Example 1: Thursday 08 2021 Example 2: Thu 8 21 Example 3: 6 PM 25 Example 4: 18:16:25 

Notatka: Aby uzyskać więcej informacji, zobacz metoda strftime(). .

Python DateTime strptime

Funkcja strptime() tworzy obiekt DateTime na podstawie podanego ciągu.

Przykład: Data i godzina strptime

Python3




# import datetime module from datetime> from> datetime> import> datetime> > # consider the time stamps from a list in string> # format DD/MM/YY H:M:S.micros> time_data> => [> '25/05/99 02:35:8.023'> ,> '26/05/99 12:45:0.003'> ,> > '27/05/99 07:35:5.523'> ,> '28/05/99 05:15:55.523'> ]> > # format the string in the given format : day/month/year> # hours/minutes/seconds-micro seconds> format_data> => '%d/%m/%y %H:%M:%S.%f'> > # Using strptime with datetime we will format string> # into datetime> for> i> in> time_data:> > print> (datetime.strptime(i, format_data))>

Wyjście

1999-05-25 02:35:08.023000 1999-05-26 12:45:00.003000 1999-05-27 07:35:05.523000 1999-05-28 05:15:55.523000 

Python DateTime.tzinfo()

The funkcja datetime.now(). nie zawiera żadnych informacji dotyczących stref czasowych. Wykorzystuje tylko bieżący czas systemowy. Tzinfo to abstrakcyjna klasa bazowa w Pythonie. Nie można go bezpośrednio utworzyć. Konkretna podklasa musi wywodzić się z tej klasy abstrakcyjnej i implementować oferowane przez nią metody.

Lista obiektów Pythona DateTime.tzinfo().

Nazwa funkcji

Opis

dst() Zwraca tzinfo.dst() to tzinfo nie jest None
zutc() Celem tej funkcji jest ustawienie daty i godziny,
zwracając odpowiednik DateTime w czasie lokalnym siebie.
znaczy() Zwraca tzinfo.tzname() to tzinfo nie jest None
utcoffset() Zwraca tzinfo.utcffsets() to tzinfo nie jest None

Przykład

Instancję klasy tzinfo można udostępnić konstruktorom obiektów DateTime i Time. Jest używany w scenariuszach takich jak konwersja czasu lokalnego na UTC lub uwzględnienie czasu letniego.

Python3




import> datetime as dt> from> dateutil> import> tz> tz_string> => dt.datetime.now(dt.timezone.utc).astimezone().tzname()> print> (> 'datetime.now() :'> , tz_string)> NYC> => tz.gettz(> 'Europe / Berlin'> )> dt1> => dt.datetime(> 2022> ,> 5> ,> 21> ,> 12> ,> 0> )> dt2> => dt.datetime(> 2022> ,> 12> ,> 21> ,> 12> ,> 0> , tzinfo> => NYC)> print> (> 'Naive Object :'> , dt1.tzname())> print> (> 'Aware Object :'> , dt2.tzname())>

Wyjście:

datetime.now() : IST Naive Object : None Aware Object : None 

Strefa czasowa Pythona DateTime

Strefy czasowe w DateTime mogą być użyte w przypadku, gdy chcesz wyświetlić czas zgodnie ze strefą czasową określonego regionu. Można tego dokonać za pomocą moduł pytza Pythona. Moduł ten obsługuje funkcje konwersji daty i godziny i pomaga użytkownikom obsługującym międzynarodowe bazy klientów.

Python3




from> datetime> import> datetime> from> pytz> import> timezone> format> => '%Y-%m-%d %H:%M:%S %Z%z'> # Current time in UTC> now_utc> => datetime.now(timezone(> 'UTC'> ))> print> (now_utc.strftime(> format> ))> timezones> => [> 'Asia/Kolkata'> ,> 'Europe/Kiev'> ,> 'America/New_York'> ]> for> tzone> in> timezones:> > # Convert to Asia/Kolkata time zone> > now_asia> => now_utc.astimezone(timezone(tzone))> > print> (now_asia.strftime(> format> ))>

Wyjście

2021-08-19 18:27:28 UTC+0000 2021-08-19 23:57:28 IST+0530 2021-08-19 21:27:28 EEST+0300 2021-08-19 14:27:28 EDT-0400