У Python дата й час не є власними типами даних, а називаються модулем Дата, час у Python можна імпортувати для роботи як з датою, так і з часом. Модуль Python Datetime вбудовано в Python, тому немає необхідності встановлювати його ззовні.
повна форма i d e
У цій статті ми розглянемо, як DateTime у Python працює та які основні класи модуля DateTime у Python.
Зміст
- Модуль Python DateTime
- Клас дати Python
- Час Python
- Клас Python Datetime
- Клас Python Timedelta
- Python DateTime.tzinfo()
- Часовий пояс Python DateTime
Модуль 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>