logo

Модуль дати і часу Python

У Python дата й час не є власними типами даних, а називаються модулем Дата, час у Python можна імпортувати для роботи як з датою, так і з часом. Модуль Python Datetime вбудовано в Python, тому немає необхідності встановлювати його ззовні.

повна форма i d e

У цій статті ми розглянемо, як DateTime у Python працює та які основні класи модуля DateTime у Python.

Зміст



Модуль Python DateTime

Python Datetime модуль містить класи для роботи з датою та часом. Ці класи надають кілька функцій для роботи з датами, часом і інтервалами часу. Date і DateTime є об’єктами в Python, тому, керуючи ними, ви маніпулюєте об’єктами, а не рядками чи мітками часу.

Модуль DateTime поділяється на 6 основних класів –

  • дата – Ідеалізована наївна дата, припускаючи, що поточний григоріанський календар завжди був і завжди буде в силі. Його атрибутами є рік, місяць і день. ви можете звернутися до - Python DateTime – клас дати
  • час – Ідеалізований час, незалежний від будь-якого конкретного дня, припускаючи, що кожен день має рівно 24*60*60 секунд. Його атрибути: година, хвилина, секунда, мікросекунда та tzinfo. Ви можете звернутися до - Python DateTime – клас часу
  • дата, час – Це комбінація дати та часу разом з атрибутами рік, місяць, день, година, хвилина, секунда, мікросекунда та tzinfo. Ви можете звернутися до - Python DateTime – клас DateTime
  • дельта часу – Тривалість, яка виражає різницю між двома датами, часом або датою та часом у мікросекундах. Ви можете звернутися до - Python DateTime – клас Timedelta
  • tzinfo – Він надає об’єкти інформації про часовий пояс. Ви можете звернутися до - Python – datetime.tzinfo()
  • часовий пояс – Клас, який реалізує абстрактний базовий клас tzinfo як фіксоване зміщення від UTC (Нове у версії 3.2). Ви можете звернутися до - Обробка часового поясу в Python

Клас дати Python

Клас date використовується для створення екземплярів об’єктів дати в Python. Коли об’єкт цього класу створюється, він представляє дату у форматі РРРР-ММ-ДД . Конструктору цього класу потрібні три обов’язкові аргументи рік, місяць і дата.

Синтаксис класу дати Python

class datetime.date(year, month, day)>

Аргументи мають бути в такому діапазоні –

  • MINYEAR <= рік <= MAXYEAR
  • 1 <= місяць <= 12
  • 1 <= день <= кількість днів у заданому місяці та році

Примітка – Якщо аргумент не є цілим числом, він викличе TypeError, а якщо він знаходиться за межами діапазону, буде викликано ValueError.

Об’єкт Date, що представляє дані в Python

Ініціалізація конструктора та передача аргументів у форматі рік, місяць і дата.

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>

>

>

Вихід:

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

Отримати поточну дату

Для повернення поточної локальної дати використовується функція класу date today(). Функція today() має кілька атрибутів (рік, місяць і день). Їх можна роздрукувати окремо.

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

>

>

Вихід

Today's date is 2021-08-19>

Отримайте сьогоднішній рік, місяць і дату

Ми можемо отримати атрибути year, month і date з об’єкта date за допомогою атрибута year, month і date класу 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)>

>

>

Вихід

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

Отримати дату з мітки часу

Ми можемо створювати об’єкти дати з часових позначок y= за допомогою методу fromtimestamp(). Мітка часу — це кількість секунд від 1 січня 1970 року за UTC до певної дати.

Python3




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

>

>

Вихід

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

Перетворення дати на рядок

Ми можемо перетворити об’єкт дати на представлення рядка за допомогою двох функцій isoformat() і 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>))>

>

>

Вихід

String Representation 2021-08-19>

Список методів класу дати

Назва функції

опис

ctime() Повертає рядок, що представляє дату
fromisocalendar() Повертає дату, що відповідає календарю ISO
fromisoformat() Повертає об’єкт дати з рядкового представлення дати
fromordinal() Повертає об’єкт дати з пролептичного григоріанського ординалу, де 1 січня року 1 має порядковий номер 1
fromtimestamp() Повертає об’єкт дати з позначки часу POSIX
ізокалендар() Повертає кортеж року, тижня та дня тижня
ізоформат() Повертає рядкове представлення дати
isoweekday() Повертає день тижня як ціле число, де понеділок дорівнює 1, а неділя – 7
замінити() Змінює значення об’єкта дати з заданим параметром
strftime() Повертає рядкове представлення дати в заданому форматі
timetuple() Повертає об’єкт типу time.struct_time
сьогодні() Повертає поточну місцеву дату
ординальний() Повертає пролептичний григоріанський порядковий номер дати, де 1 січня 1 року має порядковий номер 1
будній день() Повертає день тижня як ціле число, де понеділок дорівнює 0, а неділя – 6

Час Python

Клас часу створює об’єкт часу, який представляє місцевий час незалежно від будь-якого дня.

Синтаксис конструктора:

клас datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

Усі аргументи необов’язкові. tzinfo може мати значення None, інакше всі атрибути мають бути цілими в такому діапазоні –

  • 0 <= година < 24
  • 0 <= хвилина < 60
  • 0 <= секунда < 60
  • 0 <= мікросекунди < 1000000
  • згорнути [0, 1]

Приклад 1: об’єкт Time, що представляє час у Python

Python3


перший нащадок css



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

>

>

Вихід:

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

Приклад 2: отримати години, хвилини, секунди та мікросекунди

Після створення об’єкта часу його атрибути також можна надрукувати окремо.

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

>

>

Вихід:

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

Приклад 3: Перетворення об’єкта Time на String

Ми можемо перетворити об’єкт часу на рядок за допомогою методу 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>))>

>

>

Вихід

String Representation: 12:24:36.001212>

Список методів класу часу

Назва функції

опис

dst() Повертає tzinfo.dst() is tzinfo is not None
fromisoformat() Повертає об’єкт часу з рядкового представлення часу
ізоформат() Повертає рядкове представлення часу з об’єкта часу
замінити() Змінює значення об’єкта часу із заданим параметром
strftime() Повертає рядкове представлення часу в заданому форматі
tzname() Повертає tzinfo.tzname() is tzinfo is not None
utcoffset() Повертає tzinfo.utcffsets() is tzinfo is not None

Клас Python Datetime

The Клас DateTime містить інформацію про дату та час. Як і об’єкт date, datetime передбачає поточний григоріанський календар, розширений в обох напрямках; як об’єкт часу, datetime припускає, що кожен день рівно 3600*24 секунди.

Синтаксис конструктора:

клас datetime.datetime(рік, місяць, день, година=0, хвилина=0, секунда=0, мікросекунда=0, tzinfo=немає, *, fold=0)

Аргументи рік, місяць і день є обов’язковими. tzinfo може мати значення None, інші атрибути мають бути цілими числами в такому діапазоні –

  • MINYEAR <= рік <= MAXYEAR
  • 1 <= місяць <= 12
  • 1 <= день <= кількість днів у заданому місяці та році
  • 0 <= година < 24
  • 0 <= хвилина < 60
  • 0 <= секунда < 60
  • 0 <= мікросекунди < 1000000
  • згорнути [0, 1]

Примітка – Передача аргументу, відмінного від цілого числа, спричинить помилку TypeError, а передача аргументів за межами діапазону спричинить помилку ValueError.

Об’єкт DateTime, що представляє DateTime у Python

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

>

>

Вихід:

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

Отримайте рік, місяць, годину, хвилину та позначку часу

Після створення об’єкта DateTime його атрибути також можна надрукувати окремо.

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

>

>

Вихід:

як ініціалізувати масив у java
year = 1999 month = 12 hour = 12 minute = 12 timestamp = 945000732.0>

Поточні дата і час

Ви можете надрукувати поточну дату й час за допомогою функції Datetime.now(). функція now() повертає поточну місцеву дату й час.

Python3




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

>

>

Вихід:

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

Перетворення Python Datetime на String

Ми можемо перетворити Datetime на рядок у Python за допомогою datetime.strftime і 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))>

>

>

Вихід

2021-08-19T18:13:25.346259>

Список методів класу Datetime

Назва функції

опис

astimezone() Повертає об’єкт DateTime, що містить інформацію про часовий пояс.
об'єднати() Поєднує об’єкти дати й часу та повертає об’єкт DateTime
ctime() Повертає рядкове представлення дати та часу
дата() Повертає об’єкт класу Date
fromisoformat() Повертає об’єкт datetime із рядкового представлення дати й часу
fromordinal() Повертає об’єкт дати з пролептичного григоріанського порядкового номера, де 1 січня 1 року має порядковий номер 1. Година, хвилина, секунда та мікросекунда дорівнюють 0
fromtimestamp() Дата й час повернення з мітки часу POSIX
ізокалендар() Повертає кортеж року, тижня та дня тижня
ізоформат() Повертає рядкове представлення дати та часу
isoweekday() Повертає день тижня як ціле число, де понеділок дорівнює 1, а неділя – 7
зараз() Повертає поточну місцеву дату й час із параметром tz
замінити() Змінює певні атрибути об’єкта DateTime
strftime() Повертає рядкове представлення об’єкта DateTime у заданому форматі
strptime() Повертає об’єкт DateTime, що відповідає рядку дати
час() Повертає об’єкт класу Time
timetuple() Повертає об’єкт типу time.struct_time
timetz() Повертає об’єкт класу Time
сьогодні() Повертає локальний DateTime із tzinfo як None
ординальний() Повертає пролептичний григоріанський порядковий номер дати, де 1 січня 1 року має порядковий номер 1
tzname() Повертає назву часового поясу
utcfromtimestamp() Повернути UTC із позначки часу POSIX
utcoffset() Повертає зсув UTC
utcnow() Повернути поточну дату та час за UTC
будній день() Повертає день тижня як ціле число, де понеділок дорівнює 0, а неділя – 6

Клас Python Timedelta

Клас Python timedelta використовується для обчислення різниць у датах, а також може використовуватися для маніпуляцій з датами в Python. Це один із найпростіших способів маніпуляції з датою.

Синтаксис конструктора:

клас datetime.timedelta(дні=0, секунди=0, мікросекунди=0, мілісекунди=0, хвилини=0, години=0, тижні=0)
Повернення: Дата

Додайте дні до об’єкта DateTime

Демонстрація функції дельта часу

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

>

>

Вихід:

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>

Різниця між двома датою та часом

За допомогою цього класу також можна знайти різницю в даті та часі.

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

>

>

Вихід:

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>

Операції, що підтримуються класом Timedelta

Оператор

опис

Додавання (+) Додає та повертає два об’єкти timedelta
Віднімання (-) Віднімає та повертає два об’єкти timedelta
Множення (*) Помножує об’єкт timedelta на float або int
Відділ (/) Розділяє об’єкт timedelta за допомогою float або int
Розподіл поверхів (//) Розділяє об’єкт timedelta за допомогою float або int і повертає int мінімального значення виведення
Модуль (%) Розділяє два об’єкти timedelta і повертає залишок
+(дельта часу) Повертає той самий об’єкт timedelta
-(дельта часу) Повертає результат -1*timedelta
abs (дельта часу) Повертає +(timedelta), якщо timedelta.days> 1=0, інакше повертає -(timedelta)
str(timedelta) Повертає рядок у формі (+/-) день[и], ГГ:ХХ:СС.UUUUUU
repr(timedelta) Повертає рядкове представлення у формі виклику конструктора

Формат DateTime у Python

Форматування DateTime може бути дуже необхідним, оскільки подання дати може відрізнятися від місця до місця. У деяких країнах це може бути рррр-мм-дд, а в інших країнах це може бути дд-мм-рррр. Для форматування Python Datetime можна використовувати функції strptime і strftime.

Python Datetime strftime

Метод strftime() перетворює дану дату, час або об’єкт DateTime на рядкове представлення заданого формату.

Формат дати та часу Python

Програма Python для демонстрації функції 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)>

>

>

Вихід

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>

Примітка: Для отримання додаткової інформації див метод strftime(). .

Python DateTime strptime

Функція strptime() створює об’єкт DateTime із заданого рядка.

приклад: DateTime 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))>

>

>

Вихід

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 функція datetime.now(). не містить інформації про часові пояси. Він використовує лише поточний системний час. Tzinfo — це абстрактний базовий клас у Python. Його неможливо створити безпосередньо. Конкретний підклас повинен походити від цього абстрактного класу та реалізувати запропоновані ним методи.

Список об’єктів Python DateTime.tzinfo().

Назва функції

опис

dst() Повертає tzinfo.dst() is tzinfo is not None
fromutc() Метою цієї функції є налаштування дати та часу,
повертає еквівалент DateTime у своєму місцевому часі.
tzname() Повертає tzinfo.tzname() is tzinfo is not None
utcoffset() Повертає tzinfo.utcffsets() is tzinfo is not None

приклад

Екземпляр класу tzinfo можна надати конструкторам об’єктів DateTime і time. Він використовується в таких сценаріях, як перетворення місцевого часу на UTC або врахування літнього часу.

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

>

список методів java

>

Вихід:

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

Часовий пояс Python DateTime

Часові пояси в DateTime можна використовувати у випадку, коли потрібно відображати час відповідно до часового поясу певного регіону. Це можна зробити за допомогою модуль pytz Python. Цей модуль обслуговує функції перетворення дати й часу та допомагає користувачам обслуговувати міжнародні бази клієнтів.

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

>

>

Вихід

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>