Содержание

Класс date() модуля datetime в Python.

Варианты создания объекта даты datetime.date.

Синтаксис:
import datetime
date = datetime.date(year, month, day)
Параметры:

Все аргументы обязательны. Аргументы должны быть целыми числами.

  • year — год в пределах MINYEAR <= year <= MAXYEAR,
  • month — месяц в пределах 1 <= month <= 12,
  • day — день в пределах 1 <= day <= n, n — количество дней в данном месяце и году.

Если задан аргумент вне этих диапазонов, вызывается исключение ValueError.

Возвращаемое значение:
  • объект даты date().
Описание:

Класс date() модуля datetime — объект даты, который представляет дату — год, месяц и день в идеализированном календаре, текущий григорианский календарь бесконечно расширяется в обоих направлениях.

Атрибуты экземпляра datetime.date (только для чтения):

  • date.year — возвращает год в диапазоне, указанном выше,
  • date.month — возвращает месяц в диапазоне, указанном выше,
  • date.day — возвращает день в диапазоне, указанном выше.
>>> import datetime
>>> date = datetime.date(2020, 7, 14)
>>> date
# datetime.date(2020, 7, 14)
>>> date.day
# 14
>>> date.month
# 7
>>> date.year
# 2020

Создание объекта

datetime.date другими способами:
datetime.date.today():

Подкласс datetime.date.today() возвращает текущую местную дату, что эквивалентно вызову выражения

datetime.date.fromtimestamp(time.time()).

>>> import datetime
>>> datetime.date.today()
# datetime.date(2020, 5, 5)
datetime.date.fromtimestamp(timestamp):

Подкласс datetime. date.fromtimestamp() возвращает локальную дату, соответствующую метке времени POSIX, например возвращается функцией time.time().

Если отметка времени выходит за пределы диапазона значений, поддерживаемых функцией localtime() платформы, то это может вызвать исключение OverflowError, а при сбое системной localtime() — исключение OSError. Отметка времени обычно ограничивается годами с 1970 по 2038 год.

Обратите внимание, что в системах без POSIX, которые включают в себя понятие високосных секунд в своем значении временной метки, високосные секунды игнорируются функцией fromtimestamp().

>>> import datetime, time
>>> sec = time.time()
>>> sec
# 1588657177.4476178
>>> datetime.date.fromtimestamp(sec)
# datetime.date(2020, 5, 5)
datetime.date.fromisoformat(date_string):

Подкласс datetime.date.fromisoformat() возвращает дату, соответствующую строке date_string в формате YYYY-MM-DD:

>>> from datetime import date
>>> date.
fromisoformat('2021-12-06') # datetime.date(2021, 12, 6)

Это обратное значение возвращаемое методом date.isoformat(). Поддерживается только формат YYYY-MM-DD.

datetime.date.fromisocalendar(year, week, day):

Подкласс datetime.date.fromisocalendar() возвращает дату, соответствующую календарной дате ISO, указанной по году year, неделе week и дню day.

Это обратное значение возвращаемое методом date.isocalendar().

Поддерживаемые операции:

ОперацияРезультатЗаметка
date2 = date1 + timedelta‘date2’ это ‘timedelta.days’ дней, удаленных из ‘date1’.(1)
date2 = date1 — timedeltaВычисляет ‘date2’ так, что ‘date2 + timedelta == date1’.(2)
timedelta = date1 — date2(3)
date1 ‘date1’ считается меньше чем ‘date2’, когда ‘date1’ предшествует ‘date2’ во времени.(4)

Заметки:

  1. date2 перемещается вперед во времени, если timedelta.days > 0, или назад, если timedelta.days < 0. После операции верно равенство date2 - date1 == timedelta.days, timedelta.seconds и timedelta.microseconds игнорируются. Если date2.year будет меньше MINYEAR или больше MAXYEAR то появляется исключение OverflowError.
  2. timedelta.seconds и timedelta.microseconds игнорируются.
  3. Значение точно и не может переполниться. timedelta.seconds и timedelta.microseconds равны 0, а после справедливо равенство date2 + timedelta == date1.
  4. Другими словами, date1< date2 тогда и только тогда, когда date1.toordinal() < date2.toordinal(). Сравнение даты вызывает исключение TypeError, если один из объектов сравнения не является объектом даты. Если один из объектов сравнения имеет атрибут timetuple(), то возвращается исключение NotImplemented. Этот хук дает другим типам объектов даты возможность реализовать сравнение смешанного типа. В противном случае, когда объект даты сравнивается с объектом другого типа, то вызывается исключение TypeError.

В логическом контексте все объекты даты считаются истинными.

Модуль datetime | Python 3 для начинающих и чайников

Модуль datetime предоставляет классы для обработки времени и даты разными способами. Поддерживается и стандартный способ представления времени, однако больший упор сделан на простоту манипулирования датой, временем и их частями.

Класс datetime.date(year, month, day) — стандартная дата. Атрибуты: year, month, day. Неизменяемый объект.

Класс datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None) — стандартное время, не зависит от даты. Атрибуты: hour, minute, second, microsecond, tzinfo.

Класс datetime.timedelta — разница между двумя моментами времени, с точностью до микросекунд.

Класс datetime.tzinfo — абстрактный базовый класс для информации о временной зоне (например, для учета часового пояса и / или летнего времени).

Класс datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None) — комбинация даты и времени.

Обязательные аргументы:

  • datetime.MINYEAR (1) ≤ year ≤ datetime.MAXYEAR (9999)
  • 1 ≤ month ≤ 12
  • 1 ≤ day ≤ количество дней в данном месяце и году

Необязательные:

  • 0 ≤ minute < 60
  • 0 ≤ second < 60
  • 0 ≤ microsecond < 1000000

Методы класса datetime:

datetime.today() — объект datetime из текущей даты и времени. Работает также, как и datetime.now() со значением tz=None.

datetime.fromtimestamp(timestamp) — дата из стандартного представления времени.

datetime.fromordinal(ordinal) — дата из числа, представляющего собой количество дней, прошедших с 01.

01.1970.

datetime.now(tz=None) — объект datetime из текущей даты и времени.

datetime.combine(date, time) — объект datetime из комбинации объектов date и time.

datetime.strptime(date_string, format) — преобразует строку в datetime (так же, как и функция strptime из модуля time).

datetime.strftime(format) — см. функцию strftime из модуля time.

datetime.date() — объект даты (с отсечением времени).

datetime.time() — объект времени (с отсечением даты).

datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]) — возвращает новый объект datetime с изменёнными атрибутами.

datetime.timetuple() — возвращает struct_time из datetime.

datetime.toordinal() — количество дней, прошедших с 01.01.1970.

datetime.timestamp() — возвращает время в секундах с начала эпохи.

datetime.weekday() — день недели в виде числа, понедельник — 0, воскресенье — 6.

datetime.isoweekday() — день недели в виде числа, понедельник — 1, воскресенье — 7.

datetime.isocalendar() — кортеж (год в формате ISO, ISO номер недели, ISO день недели).

datetime.isoformat(sep=’T’) — красивая строка вида «YYYY-MM-DDTHH:MM:SS.mmmmmm» или, если microsecond == 0, «YYYY-MM-DDTHH:MM:SS»

datetime.ctime() — см. ctime() из модуля time.

Пример работы с классом datetime:

>>> from datetime import datetime, date, time
>>> # Using datetime.combine()
>>> d = date(2005, 7, 14)
>>> t = time(12, 30)
>>> datetime.combine(d, t)
datetime.datetime(2005, 7, 14, 12, 30)
>>> # Using datetime.now() or datetime.utcnow()
>>> datetime.now()
datetime.datetime(2007, 12, 6, 16, 29, 43, 79043)   # GMT +1
>>> datetime.utcnow()
datetime.datetime(2007, 12, 6, 15, 29, 43, 79060)
>>> # Using datetime.strptime()
>>> dt = datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
>>> dt
datetime.
datetime(2006, 11, 21, 16, 30) >>> # Using datetime.timetuple() to get tuple of all attributes >>> tt = dt.timetuple() >>> for it in tt: ... print(it) ... 2006 # year 11 # month 21 # day 16 # hour 30 # minute 0 # second 1 # weekday (0 = Monday) 325 # number of days since 1st January -1 # dst - method tzinfo.dst() returned None >>> # Date in ISO format >>> ic = dt.isocalendar() >>> for it in ic: ... print(it) ... 2006 # ISO year 47 # ISO week 2 # ISO weekday >>> # Formatting datetime >>> dt.strftime("%A, %d. %B %Y %I:%M%p") 'Tuesday, 21. November 2006 04:30PM'

Для вставки кода на Python в комментарий заключайте его в теги <pre><code>Ваш код</code></pre>

Свежее

  • Модуль csv — чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ

Категории

  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов

Полезные материалы

  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Мы в соцсетях

Работа с датой и временем в Python

Python содержит несколько инструментов, которые разработчик может использовать для работы с датой и временем. В данном разделе статье мы рассмотрим модули datetime и time. Мы изучим принципы их работы и способы их применения. Начнем с модуля datetime.

Модуль datetime

Мы изучим следующие классы модуля:

  • datetime.date
  • datetime.timedelta
  • datetime.datetime

Благодаря этим классам мы в будущем сможем работать с большей частью случаев, в которых нам понадобятся объекты date и datetime. Также существует класс tzinfo, который применяется для работы с часовыми поясами. Для дополнительной информации об этом классе вы можете обратиться к документации Python.

datetime.date

Python может представлять даты различными способами. Для начала, рассмотрим формат datetime.date, так как это один из самых простых объектов date.

Python

print( datetime.date(2012, 13, 14) ) Traceback (most recent call last): File «<string>», line 1, in <fragment> builtins.

ValueError: month must be in 1..12

print( datetime.date(2012, 13, 14) )

 

Traceback (most recent call last):

    File «<string>», line 1, in <fragment>

builtins.ValueError: month must be in 1..12

Python

print(datetime.date(2012, 12, 14)) # datetime.date(2012, 12, 14)

print(datetime.date(2012, 12, 14)) # datetime.date(2012, 12, 14)

В данном коде показано, как создать простой объект даты. Класс date принимает три аргумента: год, месяц и день. Если вы укажите неправильное значение, вы увидите ошибку ValueError, как в случае выше. В противном случае вы увидите, что объект

datetime.date вернулся. Давайте взглянем на еще один пример:

Python

import datetime d = datetime.date(2012, 12, 14) print(d.year) # 2012 print(d.day) # 14 print(d. month) # 12

1

2

3

4

5

6

import datetime

d = datetime.date(2012, 12, 14)

 

print(d.year) # 2012

print(d.day)  # 14

print(d.month) # 12

Здесь мы присваиваем объекту date переменную d. Теперь мы можем получить доступ к различным компонентам даты по названиям, таким как d.year или d.month. Давайте посмотрим, какой сейчас день:

Python

import datetime print(datetime.date.today()) # datetime.date(2017, 4, 5)

import datetime

 

print(datetime.date.today()) # datetime.date(2017, 4, 5)

Это может быть полезно, когда вам нужно записать, какой сейчас день. Или, если вам нужно выполнить основанный на сегодняшней дате расчет. Мелочь, а приятно.

datetime.datetime

Объект datetime. datetime содержит всю информацию объектов datetime.date плюс datetime.time. Давайте приведем несколько примеров, для лучшего понимания разницы между этим объектом, и объектом datetime.date.

Python

import datetime a = datetime.datetime(2017, 3, 5) print(a) # datetime.datetime(2017, 3, 5, 0, 0) b = datetime.datetime(2017, 3, 5, 12, 30, 10) print(b) # datetime.datetime(2017, 3, 5, 12, 30, 10) d = datetime.datetime(2017, 3, 5, 12, 30, 10) print(d.year) # 2017 print(d.second) # 10 print(d.hour) # 12

1

2

3

4

5

6

7

8

9

10

11

12

import datetime

 

a = datetime.datetime(2017, 3, 5)

print(a) # datetime.datetime(2017, 3, 5, 0, 0)

 

b = datetime.datetime(2017, 3, 5, 12, 30, 10)

print(b) # datetime.datetime(2017, 3, 5, 12, 30, 10)

 

d = datetime. datetime(2017, 3, 5, 12, 30, 10)

print(d.year) # 2017

print(d.second) # 10

print(d.hour) # 12

Мы видим, что datetime.datetime принимает несколько дополнительных аргументов: год, месяц, день, час, минута и секунда. Это также позволяет вам указывать информацию о микросекундах и часовом поясе. При работе с базами данных, данные типы объектов будут использоваться достаточно часто. Большую часть вашей работы, вам нужно будет конвертировать форматы date или datetime Python в форматы SQL datetime или timestamp. Обратите внимание на то, что today совместно с datetime.datetime использует два разных метода:

Python

import datetime a = datetime.datetime.today() print(a) # datetime.datetime(2017, 4, 5, 0, 16, 54, 989663) b = datetime.datetime.now() print(b) # datetime.datetime(2017, 4, 5, 0, 17, 8, 24239)

1

2

3

4

5

6

7

import datetime

 

a = datetime. datetime.today()

print(a) # datetime.datetime(2017, 4, 5, 0, 16, 54, 989663)

 

b = datetime.datetime.now()

print(b) # datetime.datetime(2017, 4, 5, 0, 17, 8, 24239)

Модуль datetime содержит другой метод, под названием strftime. Этот метод позволяет разработчику создавать строку, отображающую время в более понятной для человека форме. Существует целая таблица параметров форматирования, с которой рекомендуется ознакомиться в документации Python, в секции 8.1.7. Давайте взглянем на несколько примеров, показывающих всю полезность данного метода:

Python

import datetime a = datetime.datetime.today().strftime(«%Y%m%d») print(a) # ‘20170405’ today = datetime.datetime.today() print( today.strftime(«%m/%d/%Y») ) # ’04/05/2017′ print( today.strftime(«%Y-%m-%d-%H.%M.%S») ) # 2017-04-05-00.18.00

1

2

3

4

5

6

7

8

9

import datetime

 

a = datetime. datetime.today().strftime(«%Y%m%d»)

print(a) # ‘20170405’

 

today = datetime.datetime.today()

print( today.strftime(«%m/%d/%Y») ) # ’04/05/2017′

 

print( today.strftime(«%Y-%m-%d-%H.%M.%S») ) # 2017-04-05-00.18.00

Первый пример – это скорее хитрость. В нем показано, как конвертировать сегодняшний объект datetime в строку, следующую за форматом YYYYMMDD (ГГГГММДД). Второй пример более наглядный.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Python Форум Помощи

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Подписаться

В нем мы присваиваем объект datetime переменной под названием today и применяем два разных параметра форматирования строки. Первый параметр добавляет косые черточки между элементами datetime, а также перегруппировывает datetime, теперь он делится на месяц, день и год. В последнем примере мы создаем временную отметку, которая следует типичному формату: YYYY-MM-DD.HH.MM.SS. Если вам нужно указать год как двухзначный (“YY”), вы можете заменить %Y на %y.

datetime.timedelta

Объект datetime.timedelta отображает длительность времени. Другими словами, это разница между двумя датами или временными отметками. Давайте взглянем на наглядный пример:

Python

import datetime # Значение: datetime.datetime(2017, 4, 5, 0, 18, 51, 980187) now = datetime.datetime.now() then = datetime.datetime(2017, 2, 26) # Кол-во времени между датами. delta = now — then print(delta.days) # 38 print(delta.seconds) # 1131

1

2

3

4

5

6

7

8

9

10

11

12

import datetime

 

# Значение: datetime. datetime(2017, 4, 5, 0, 18, 51, 980187)

now = datetime.datetime.now()

 

then = datetime.datetime(2017, 2, 26)

 

# Кол-во времени между датами.

delta = now — then

 

print(delta.days) # 38

print(delta.seconds) # 1131

Мы создали два объекта datetime. Один указывает на сегодняшний день, второй – на прошедшую неделю. После этого, мы берем разницу между ними. Это возвращает объект timedelta, который мы можем далее использовать, чтобы выяснить, сколько прошло дней или секунд, между этими двумя датами. Если вам нужно узнать количество часов или минут между двумя датами, вам понадобится немножко математики, чтобы выяснить это. Давайте взглянем на проверенный способ:

Python

seconds = delta.total_seconds() hours = seconds // 3600 print(hours) # 186.0 minutes = (seconds % 3600) // 60 print(minutes) # 13.0

1

2

3

4

5

6

7

seconds = delta. total_seconds()

hours = seconds // 3600

 

print(hours) # 186.0

 

minutes = (seconds % 3600) // 60

print(minutes) # 13.0

Отсюда мы узнаем, что в неделе 186 часов и 13 минут. Обратите внимание на то, что мы используем двойную косую черту в качестве нашего оператора деления, также известного как floor division. Теперь мы готовы к тому, чтобы узнать больше о модуле time Python.

Модуль time

Модуль time открывает разработчику Python доступ к нескольким связанным со временем функциям. Модуль основан на «эпохе», точке, с которой начинается время. Для систем Unix, эпоха началась в 1970 году. Чтобы узнать, какая эпоха в вашей системе, попробуйте запустить следующий код:

Python

import time print(time.gmtime(0))

import time

print(time.gmtime(0))

Результат

Python

time. struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=\ 0, tm_wday=3, tm_yday=1, tm_isdst=0)

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=\

0, tm_wday=3, tm_yday=1, tm_isdst=0)

Я запустил его на Windows 7, которая также уверена в том, что начало времен датируется 1970м годом. В любом случае, в данном разделе мы ознакомимся со следующими функциями:

  • time.ctime
  • time.sleep
  • time.strftime
  • time.time

Приступим!

time.ctime

Функция time.ctime конвертирует время в секунды, начиная с эпохи, в строку, показывающую местное время. Если вы ничего не передадите данной функции, то настоящее время вернется обратно. Давайте взглянем на несколько примеров:

Python

import time print(time.ctime()) # ‘Wed Apr 5 00:02:49 2017’ print(time. ctime(1384112639)) # ‘Sun Nov 10 13:43:59 2013’

import time

print(time.ctime()) # ‘Wed Apr 5 00:02:49 2017’

 

print(time.ctime(1384112639)) # ‘Sun Nov 10 13:43:59 2013’

В данном коде мы показали результаты вызова функции time.ctime, как со случайным набором секунд, начиная с эпохи, так и с пустным значением. Это можно применить, к примеру, в том случае, кода кому-нибудь нужно сохранить дату в секундах, начиная с эпохи, после чего конвертировать это в более удабриваемый формат. Немного проще, сохранить большое целое число (или длинное) в базу данных, чем страдать над ним, форматируя объект datetime в какой-либо объект даты, который принимает база данных. Конечно, это также имеет свой недостаток: вам, возможно, нужно будет преобразовать целое число или значение с плавающей запятой обратно в строку.

time.sleep

Функция time.sleep дает разработчику возможность приостановить выполнение его скрипта на определенное количество секунд. Это можно сравнить с добавлением функции «Пауза» в вашу программу. Я нашел этот класс особенно полезным, когда мне нужно было подождать несколько секунд, пока закроется файл, или база данных закончит выполнять свою задачу. Давайте взглянем на пример. Откройте новое окно в IDLE и сохраните следующий код:

Python

import time for x in range(5): time.sleep(2) print(«Slept for 2 seconds»)

import time

 

for x in range(5):

    time.sleep(2)

    print(«Slept for 2 seconds»)

Теперь запустите этот код в IDLE. Сделав это, вы увидите фразу «Slept for 2 seconds» пять раз, с интервалом в 2 секунды между каждым сообщением. Это очень легко в использовании!

time.strftime

Модуль time имеет функцию strftime, которая работает по схожему с версией datetime принципу. Разница заключается, главным образом, в том, что именно она принимает для ввода: кортеж, или объект struct_time, вроде тех, которые возвращаются после вызова time. gmtime() или time.localtime(). Вот небольшой пример:

Python

import time a = time.strftime(«%Y-%m-%d-%H.%M.%S», time.localtime()) print(a) # ‘2017-04-05-00.11.20’

import time

 

a = time.strftime(«%Y-%m-%d-%H.%M.%S», time.localtime())

print(a) # ‘2017-04-05-00.11.20’

Этот код очень похож на код временной отметки, который мы создавали в разделе datetime. На мой взгляд, метод datetime более интуитивен при создании объекта datetime.datetime а затем при вызове его метода strftime в том формате, который вам более удобен. С модулем time, вам нужно передать формат и кортеж времени. На самом деле выбор за вами, каким именно способом вам будет удобнее решить вашу задачу.

time.time

Функция time.time отображает время в секундах, начиная с эпохи, как число с плавающей запятой. Давайте взглянем:

Python

import time x = time.time() print(x) # 1491340367.478385

import time

 

x = time.time()

print(x) # 1491340367.478385

Весьма просто. Вы можете использовать данную функцию, когда вам нужно сохранить настоящее время в базу данных, но вам не нужно конвертировать его в метод datetime вашей базы данных. Вы можете вспомнить о том, что метод ctime принимает время в секундах, так что мы можем использовать time.time для получения количества секунд для передачи их ctime, вот так:

Python

import time a = time.ctime(time.time()) print(a) # Wed Apr 5 00:13:47 2017

import time

 

a = time.ctime(time.time())

print(a) # Wed Apr 5 00:13:47 2017

Если вы обратитесь к документации, чтобы узнать больше о модуле time, или если вы хотите немного поэкспериментировать, вы найдете несколько способов использования данной функции.

Подведем итоги

С этого момента вы готовы работать с датой и временем в стандартных модулях Python. Работая в Python, вы получаете широкий спектр возможностей при работе с датами. Вы найдете данные модули полезными, особенно при разработке приложения, которое отслеживает встречи, или должно срабатывать в определенные дни. Также они весьма полезны при работе с базами данных.

Vasile Buldumac

Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.

E-mail: [email protected]

Образование
Universitatea Tehnică a Moldovei (utm.md)

  • 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
  • 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»

Модуль datetime

Модуль datetime предоставляет классы для обработки времени и даты разными способами. Поддерживается и стандартный способ представления времени, однако больший упор сделан на простоту манипулирования датой, временем и их частями.

Классы, предоставляемые модулем datetime:

datetime.date(year, month, day)

стандартная дата. Атрибуты: year, month, day. Неизменяемый объект.

import datetime
d = datetime.date(2012, 12, 14)
print(d.year) # 2012
print(d.day)  # 14
print(d.month) # 12

datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

содержит всю информацию объектов datetime.date плюс datetime.time.

import datetime
a = datetime.datetime(2017, 3, 5)
print(a) # datetime.datetime(2017, 3, 5, 0, 0)
b = datetime.datetime(2017, 3, 5, 12, 30, 10)
print(b) # datetime.datetime(2017, 3, 5, 12, 30, 10)
d = datetime.datetime(2017, 3, 5, 12, 30, 10)
print(d.year) # 2017
print(d.second) # 10
print(d.hour) # 12

datetime.datetime принимает несколько дополнительных аргументов: год, месяц, день, час, минута и секунда. Это также позволяет вам указывать информацию о микросекундах и часовом поясе.

datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

стандартное время, не зависит от даты. Атрибуты: hour, minute, second, microsecond, tzinfo.

datetime.timedelta

описывает определенный период во времени, который находится между двумя различными моментами

АтрибутЗначение
daysМежду −999999999 and 999999999 включительно
secondsМежду 0 и 86399 включительно
microsecondsМежду 0 и 999999 включительно

Поддерживаемые операции

ОперацияРезультат
t1 = t2 + t3Суммирует дельту между датами
t1 = t2 — t3Разница дельт между датами
t1 = t2 * i or t1 = i * t2Умножение дельты на целое число
t1 = t2 * f or t1 = f * t2Дельта умножается на число с плавающей точкой
f = t2 / t3Деление общей длительности t2 на интервал t3. Возвращает объект с плавающей точкой
t1 = t2 / f or t1 = t2 / iДельта делится на число с плавающей точкой или целое
t1 = t2 % t3Остаток часть вычисляется как объект timedelta
q, r = divmod(t1, t2)Вычисляет частное и остаток: q = t1 // t2 (3) и r = t1% t2. q — целое число, а r — объект deltatime
+t1Возвращает объект timedelta с полностью идентичным значением t1
—t1возвращает объект timedelta с полностью противоположным значением t1
abs(t)возвращает объект timedelta с положительным значением всех свойств t
str(t)возвращает строковое представление объекта a в формате, заданном по умолчанию
repr(t)возвращает строковое представление объекта a в формате с отрицательными значениями

timedelta.

total_seconds()

Возвращает общее количество секунд, содержащихся в продолжительности. Эквивалентно (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 * 6)/10 * 6 рассчитано с включенным истинным делением. Пример:

>>> from datetime import timedelta
>>> year = timedelta(days=365)
>>> another_year = timedelta(weeks=40, days=84, hours=23,
...                          minutes=50, seconds=600)  # adds up to 365 days
>>> year.total_seconds()
31536000.0
>>> year == another_year
True
>>> ten_years = 10 * year
>>> ten_years, ten_years.days // 365
(datetime.timedelta(days=3650), 10)
>>> nine_years = ten_years - year
>>> nine_years, nine_years.days // 365
(datetime.timedelta(days=3285), 9)
>>> three_years = nine_years // 3
>>> three_years, three_years.days // 365
(datetime.timedelta(days=1095), 3)
>>> abs(three_years - ten_years) == 2 * three_years + year
True

datetime.

tzinfo

абстрактный базовый класс для информации о временной зоне (например, для учета часового пояса и/или летнего времени).

Методы класса datetime:

datetime.combine(date, time)

объект datetime из комбинации объектов date и time.

datetime.fromtimestamp(timestamp)

дата из стандартного представления времени.

datetime.fromordinal(ordinal)

дата из числа, представляющего собой количество дней, прошедших с 01.01.1970.

datetime.now(tz=None)

объект datetime из текущей даты и времени.

datetime.today()

объект datetime из текущей даты и времени. Работает также, как и datetime.now() со значением tz=None.

datetime.strptime(date_string, format)

преобразует строку в datetime по формату

ФорматЗначение
%aСокращенное название дня недели
%AПолное название дня недели
%bСокращенное название месяца
%BПолное название месяца
%cДата и время
%dДень месяца [01,31]
%HЧас (24-часовой формат) [00,23]
%IЧас (12-часовой формат) [01,12]
%jДень года [001,366]
%mНомер месяца [01,12]
%MЧисло минут [00,59]
%pДо полудня или после (при 12-часовом формате)
%SЧисло секунд [00,61]
%UНомер недели в году (нулевая неделя начинается с воскресенья) [00,53]
%wНомер дня недели [0(Sunday),6]
%WНомер недели в году (нулевая неделя начинается с понедельника) [00,53]
%xДата
%XВремя
%yГод без века [00,99]
%YГод с веком
%ZВременная зона
%%Знак ‘%’

datetime.

strftime(format)

преобразует datetime в строку по формату

ФорматЗначение
%aСокращенное название дня недели
%AПолное название дня недели
%bСокращенное название месяца
%BПолное название месяца
%cДата и время
%dДень месяца [01,31]
%HЧас (24-часовой формат) [00,23]
%IЧас (12-часовой формат) [01,12]
%jДень года [001,366]
%mНомер месяца [01,12]
%MЧисло минут [00,59]
%pДо полудня или после (при 12-часовом формате)
%SЧисло секунд [00,61]
%UНомер недели в году (нулевая неделя начинается с воскресенья) [00,53]
%wНомер дня недели [0(Sunday),6]
%WНомер недели в году (нулевая неделя начинается с понедельника) [00,53]
%xДата
%XВремя
%yГод без века [00,99]
%YГод с веком
%ZВременная зона
%%Знак ‘%’

datetime.

date()

объект даты (с отсечением времени).

datetime.isoweekday()

день недели в виде числа, понедельник — 1, воскресенье — 7.

datetime.isocalendar()

кортеж (год в формате ISO, ISO номер недели, ISO день недели).

datetime.isoformat(sep=’T’)

красивая строка вида «YYYY-MM-DDTHH:MM:SS.mmmmmm» или, если microsecond == 0, «YYYY-MM-DDTHH:MM:SS»

datetime.replace ([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])

возвращает новый объект datetime с изменёнными атрибутами.

datetime.time()

объект времени (с отсечением даты).

datetime.timetuple()

возвращает struct_time из datetime.

datetime.timestamp()

возвращает время в секундах с начала эпохи.

datetime.toordinal()

количество дней, прошедших с 01.01.1970.

datetime.weekday()

день недели в виде числа, понедельник — 0, воскресенье — 6.

Поддерживаемые операции:

ОперацияРезультат
datetime2 = datetime1 + timedeltaПрибавляет к дате указанный период
datetime2 = datetime1 — timedeltaВычитает из даты указанный период
timedelta = datetime1 — datetime2Возвращает разницу между двумя датами
datetime1 < datetime2Сравнивает дату и время(3)

Модуль datetime в Python OTUS

Статья посвящена работе с модулем datetime, который используется в языке программирования Python для определения даты и времени. В рамках изучения модуля будут рассмотрены классы Python date, Python time и Python timedelta.

Получение текущего времени и даты в Python

Сначала напишем пару простейших программ на Python.

В коде выше модуль datetime импортирован посредством import datetime, а одним из классов, который определен в модуле datetime, является одноименный класс datetime. Далее используется метод now, который создает в Python объект datetime. Этот объект содержит локальное время и дату на текущий момент (на момент отработки кода).

Выполнив этот код на Python, мы получим в выводе текущие дату и время. Это будет выглядеть приблизительно следующим образом:

2021-01-26 13:13:56.780540

Получаем только дату в Python. Работа с датой

Внеся небольшие изменения в код на Python, можно получить только дату (date).

Теперь для получения объекта date был задействован метод today, который определен в классе date. Это позволило получить объект date и отобразить локальную дату на момент запуска программы.

В итоге результат отображения даты в Python изменится:

2021-01-26  

Так как вы будете запускать этот код в другие дни (days), результат будет отличаться.

Что внутри datetime?

У модуля datetime есть атрибуты: time, timezone, tzinfo, timedelta и многие другие. Количество доступных атрибутов довольно велико, поэтому, чтобы увидеть все возможные данные (data), можно воспользоваться функцией dir:

Приблизительный вывод в Python:

На практике в Python чаще всего используют следующие классы модуля datetime:

  • time,
  • date,
  • datetime,
  • timedelta.

Класс date

Объект date позволяет работать с датой:

import datetime

a = datetime.date(2021, 1, 26)

print(a)

То есть вывод даты будет соответствовать тому, что вы пропишете в коде:

2021-01-26                                                                                                       

Здесь date — конструктор класса date. Этот конструктор принимает 3 аргумента: год, месяц, день. Также присутствует переменная a — объект date.

Если надо получит текущую дату, используем уже знакомый метод today.

from datetime import date

today = date.today()

print("Какая сегодня дата:", today)

Вывод на момент проверки:

Какая сегодня дата: 2021-01-26                                                                                   

Также существует возможность создавать объекты date, используя метку времени — timestamp. Этот термин используется при обозначении времени POSIX — подразумевается число секунд, которые прошли с 00:00:00 UTC 1.01.1970 г. Для преобразования метки времени в дату в Python используют метод fromtimestamp.

Из объекта date можно без проблем получить текущие значения дня, года, месяца:

from datetime import date

today = date. today()

print("Какой сейчас год:", today.year)

print("Какой сейчас месяц:", today.month)

print("Какой сегодня день:", today.day)

А вот и результат:

Класс time

Экземпляр класса time отвечает за время, куда входит широкий спектр данных (data): и часы, и минуты, и секунды, и даже микросекунды.

Давайте опять передадим любые атрибуты, но чуть изменим код.

from datetime import time

a = time(11, 34, 56)

print("часы =", a.hour)

print("минуты =", a.minute)

print("секунды =", a.second)

print("микросекунды =", a.microsecond)

Следует обратить внимание, что аргумент microsecond передан не был. В результате было присвоение дефолтное значение, равное нулю.

Класс  datetime

Включает в себя информацию и о дате, и о времени.

Первые 3 аргумента обязательны для конструктора datetime — это year, month и day. Значения, которые отсутствуют, заполняются нулями.

Дополнительно можно прописать вывод метки времени:

Если же нужны значения текущего момента времени, получить его можно как посредством метода now, так и посредством метода today. В примере ниже задействован и now, и today:

Класс timedelta

Объект, называемый timedelta, позволяет получить разницу между 2-мя моментами времени. Вот, как это работает:

Приведем еще один пример с time delta:

Выше были созданы 2 timedelta-объекта — t1 и t2. Их разница и была выведена на экран.

Если нужна более подробная информация о timedeltas , лучше всего заглянуть в официальную документацию.

Формат

Даты (dates), как и времена (times), могут быть представлены в разных странах по-разному. В США чаще применяют формат «MM/DD/YYYY» (months, days, years), в Соединенном Королевстве — «DD/MM/YYYY» (days, months, years). В языке программирования Python для работы с форматами существуют специальные методы: strftime и strptime.

Метод strftime определяется в классах time, date и datetime. Он позволит создать форматированную строку на основе заданного объекта.

Давайте отформатируем дату посредством strftime:

Если же надо преобразовать строку в объект datetime, используют уже strptime.

Обработка часового пояса

Представим, что мы работаем над проектом, в котором надо обеспечить отображение даты и времени с учетом от часового пояса пользователей. Получить нужные данные (data) и обработать часовой пояс можно самостоятельно, но лучше всего воспользоваться готовым модулем pytZ.

Что здесь что: datetime_NY и datetime_London представляют собой объекты datetime, которые содержат текущее время и дату соответствующего часового пояса. Как видите, ничего сложного.

Хотите получить самые новые знания про Python? Добро пожаловать на наши курсы!

Источник: https://pythonist. ru/rabota-s-datoj-i-vremenem-modul-datetime/.

Работа с датой и временем: модуль datetime

В этой статье мы разберемся, как работать с датой и временем в Python при помощи модуля datetime. И для начала давайте напишем несколько простых программ, связанных с датой и временем.

Пример 1: Получение текущей даты и времени.

import datetime
datetime_object = datetime.datetime.now()
print(datetime_object)

Когда вы запустите программу, результат будет примерно таким:

2020-06-29 20:30:33.139533

В этом примере мы импортировали модуль datetime с помощью оператора import datetime.

Одним из классов, определенных в модуле datetime, является класс datetime. После импортирования модуля мы использовали метод now() для создания объекта datetime, содержащего текущие локальные дату и время.


Пример 2: Получение текущей даты.

import datetime
date_object = datetime.date.today()
print(date_object)

Когда вы запустите программу, результат будет примерно таким:

2020-06-29

В этой программе мы использовали метод today(), определенный в классе date, чтобы получить объект date, содержащий текущую локальную дату.

Что находится внутри datetime?

Мы можем использовать функцию dir() для получения списка, содержащего все атрибуты модуля datetime.

import datetime
print(dir(datetime))

Когда вы запустите программу, вывод будет следующим:

['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']

Наиболее часто используемыми классами в модуле datetime являются:

  • date
  • time
  • datetime
  • timedelta

Класс datetime.

date

Объект date представляет дату (год, месяц и день).

Пример 3: объект date для представления даты.

import datetime
d = datetime.date(2020, 6, 29) 
print(d)

Когда вы запустите программу, вывод будет следующим:

2020-06-29

В приведенном выше примере date()  является конструктором класса date. Конструктор принимает три аргумента: год, месяц и день.

Переменная d — это объект date.

Вы можете создавать объекты класса date, предварительно импортировав модуль datetime, а можете импортировать только класс date из модуля datetime. Вот как это делается:

from datetime import date
a = date(2020, 6, 29)
print(a) # 2020-06-29

Пример 4: Получение текущей даты.

Для получения информации о текущей дате можно воспользоваться методом today().

from datetime import date
today = date.today()
print("Current date =", today)

Когда вы запустите программу, вывод будет следующим:

Current date = 2020-06-29


Пример 5: получение даты из метки времени (timestamp).

Мы также можем создавать объекты date из метки времени (timestamp). Термин timestamp употребляется для обозначения POSIX-времени — количества секунд, прошедшего с 00:00:00 UTC 1 января, 1970 года. Вы можете преобразовать метку времени в дату при помощи метода fromtimestamp().

from datetime import date
timestamp = date. fromtimestamp(1326244364)
print("Date =", timestamp)

Когда вы запустите программу, вывод будет следующим:

Date = 2012-01-11


Пример 6: вывод текущего года, месяца и дня.

Мы легко можем получить год, месяц, день, день недели и т. д. из объекта date. Вот как это делается:

from datetime import date
today = date.today() 
print("Current year:", today.year)
print("Current month:", today.month)
print("Current day:", today.day)

Когда вы запустите программу, результат будет примерно таким:

Current year: 2020

Current month: 6

Current day: 29

Класс datetime.time

Экземпляр класса time представляет собой время (часы, минуты, секунды и микросекунды).

Пример 7: объект time для представления времени.

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 = 00:00:00

b = 11:34:56

c = 11:34:56

d = 11:34:56.234566


Пример 8: вывод часов, минут, секунд и микросекунд.

После того как вы создадите объект time, вы можете легко получить его атрибуты, такие как часы, минуты и т. д.

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)

Когда вы запустите программу, вывод будет следующим:

hour = 11

minute = 34

second = 56

microsecond = 0

Обратите внимание, что мы не передали аргумент microsecond. Следовательно, его значение по умолчанию будет равно 0.

Класс  datetime.datetime

Экземпляр класса datetime содержит информацию как о дате, так и о времени.

Пример 9: объект datetime.

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)

Когда вы запустите программу, вывод будет следующим:

2018-11-28 00:00:00

2017-11-28 23:55:59. 342380

 

Первые три аргумента year, month и day в конструкторе datetime() являются обязательными. Отсутствующие данные будут заполнены нулями по умолчанию.


Пример 10: вывод года, месяца, часа, минуты и метки времени.

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

Когда вы запустите программу, вывод будет следующим:

year = 2017

month = 11

day = 28

hour = 23

minute = 55

timestamp = 1511913359.34238


Пример 11: получение текущего момента времени.

Мы можем получить информацию о текущем моменте времени не только с помощью уже упомянутого метода now(), но и с помощью today().

from datetime import datetime
date = datetime.today()
print(date)
date = datetime.now()
print(date)

Когда вы запустите программу, результат будет примерно таким:

2020-06-29 20:35:33.353184

2020-06-29 20:35:33.356184

Класс datetime.timedelta

Объект timedelta представляет разницу между двумя моментами времени.

Пример 12: разница между двумя моментами времени.

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

Когда вы запустите программу, вывод будет следующим:

t3 = 201 days, 0:00:00

t6 = -333 days, 1:14:20

type of t3 = <class 'datetime. timedelta'>

type of t6 = <class 'datetime.timedelta'>

Обратите внимание, что и t3, и t6 имеют тип <class 'datetime.timedelta'>.


Пример 13: разница между двумя объектами timedelta.

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)

Когда вы запустите программу, вывод будет следующим:

t3 = 14 days, 13:55:39

Здесь мы создали два объекта timedeltat1 и t2, и их разница выводится на экран.


Пример 14:  отрицательный объект timedelta.

from datetime import timedelta
t1 = timedelta(seconds = 33)
t2 = timedelta(seconds = 54)
t3 = t1 - t2
print("t3 =", t3)
print("t3 =", abs(t3))

Когда вы запустите программу, вывод будет следующим:

t3 = -1 day, 23:59:39

t3 = 0:00:21


Пример 15: интервал времени в секундах.

Вы можете получить общее количество секунд объекта timedelta, используя метод total_seconds().

from datetime import timedelta
t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423)
print("total seconds =", t.total_seconds())

Когда вы запустите программу, вывод будет следующим:

total seconds = 435633.233423

Вы также можете найти сумму двух моментов времени, используя оператор +. Кроме того, вы можете умножить и разделить объект timedelta на целые числа и числа с плавающей точкой.

Больше информации о timedelta вы можете найти в документации.

Формат datetime

Представление даты и времени может отличатся в разных странах, организациях и т. д. В США, например, чаще всего используется формат «мм/дд/гггг», тогда как в Великобритании более распространен формат «дд/мм/гггг».

В Python для работы с форматами есть методы strftime() и strptime().

Python strftime() — преобразование объекта datetime в строку

Метод strftime() определен в классах date, datetime и time. Он создает форматированную строку из заданного объекта date, datetime или time.

Пример 16: форматирование даты с использованием метода strftime().

from datetime import datetime
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)

Когда вы запустите программу, результат будет примерно таким:

time: 20:43:57

s1: 06/29/2020, 20:43:57

s2: 29/06/2020, 20:43:57

Здесь %Y, %m, %d, %H и т. д. — коды для определения формата. Метод strftime() принимает один или несколько кодов и возвращает отформатированную строку на его основе.

В приведенной выше программе переменные t, s1 и s2 являются строками.

Основные коды для определения формата:

  • %Y — год [0001, …, 2018, 2019, …, 9999]
  • %m — месяц [01, 02, …, 11, 12]
  • %d — день [01, 02, …, 30, 31]
  • %H — час [00, 01, …, 22, 23]
  • %M — минута [00, 01, …, 58, 59]
  • %S — секунда [00, 01, …, 58, 59]

Чтобы узнать больше о методе strftime() и кодах форматирования, перейдите по ссылке.

Python strptime()- преобразование строки в  объект datetime

Метод strptime() создает объект datetime из заданной строки (представляющей дату и время).

Пример 17: метод 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)

Когда вы запустите программу, вывод будет следующим:

date_string = 21 June, 2018

date_object = 2018-06-21 00:00:00

Метод strptime() принимает два аргумента:

  1. строка, представляющая дату и время.
  2. формат, определяющий, каким образом части даты и времени расположены в переданной строке.

Кстати, коды %d, %B и %Y используются для обозначения дня, месяца (название месяца в полном виде) и года соответственно.

Перейдите по ссылке чтобы узнать больше о методе strptime().

Обработка часового пояса в Python

Предположим, вы работаете над проектом и должны отображать дату и время в зависимости от часового пояса пользователей. Вместо того, чтобы пытаться обрабатывать часовой пояс самостоятельно, мы предлагаем вам использовать модуль pytZ.

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

Когда вы запустите программу, результат будет примерно таким:

Local: 06/29/2020, 00:16:45

NY: 06/28/2020, 17:17:00

London: 06/28/2020, 22:17:00

Здесь datetime_NY и datetime_London — это объекты datetime, содержащие текущую дату и время соответствующего часового пояса.

Английский для программистов

Наш телеграм канал с тестами по английскому языку для программистов. Английский это часть карьеры программиста. Поэтому полезно заняться им уже сейчас

Скачать

×

Даты Python

❮ Предыдущая Далее ❯


Даты Python

Дата в Python не является собственным типом данных, но мы можем импортировать модуль named datetime для работы с датами как с датами объекты.

Пример

Импорт модуля datetime и отображение текущей даты:

import datetime

x = datetime.datetime.now()
print(x)

Попробуйте сами »


Вывод даты

Когда мы выполним код из приведенного выше примера, результатом будет:

Дата содержит год, месяц, день, час, минуту, секунду и микросекунду.

Модуль datetime имеет множество методов для возврата информации о дате объект.

Вот несколько примеров, вы узнаете о них позже в этом глава:

Пример

Вернуть год и название дня недели:

import datetime

x = datetime.datetime.now()

print(x.year)
print(x.strftime(«%A»))

Попробуйте сами »


Создание объектов даты

Чтобы создать дату, мы можем использовать класс datetime() (конструктор) класса модуль даты и времени .

Класс datetime() требует три параметра для создания даты: год, день месяца.

Пример

Создать объект даты:

import datetime

x = datetime.datetime(2020, 5, 17)

print(x)

Попробуйте сами »

datetime() 9Класс 0009 также принимает параметры для времени и часового пояса (час, минута, секунда, микросекунда, tzone), но они являются необязательными и имеют значение по умолчанию. значение 0 , ( Нет для часового пояса).



Метод strftime()

Объект datetime имеет метод для форматирования объектов даты в читаемые строки.

Метод называется strftime() и принимает один параметр, формат , чтобы указать формат возвращаемой строки:

Пример

Показать название месяца:

import datetime

x = datetime. datetime(2018, 6, 1)

print(x.strftime("%B"))

Попробуйте сами »

Ссылка на все коды юридических форматов:

Директива Описание Пример Попробуй
Будний день, короткая версия Ср Попробуй »
Будний день, полная версия Среда Попробуй »
% вес День недели в виде числа 0-6, 0 — воскресенье 3 Попробуй »
День месяца 01-31 31 Попробуй »
%b Название месяца, короткая версия декабрь Попробуй »
Название месяца, полная версия декабря Попробуй »
Месяц в виде числа 01-12 12 Попробуй »
Год, короткая версия, без века 18 Попробуй »
%Y Год, полная версия 2018 Попробуй »
%H Час 00-23 17 Попробуй »
%I Час 00-12 05 Попробуй »
утра/вечера PM Попробуй »
Минута 00-59 41 Попробуй »
%S Второй 00-59 08 Попробуй »
%f Микросекунда 000000-999999 548513 Попробуй »
%z Смещение UTC +0100
%Z Часовой пояс КСТ
%j Номер дня года 001-366 365 Попробуй »
%U Номер недели в году, воскресенье как первый день недели, 00-53 52 Попробуй »
%W Номер недели в году, понедельник как первый день недели, 00-53 52 Попробуй »
Локальная версия даты и времени Пн Дек 31 17:41:00 2018 Попробуй »
Век 20 Попробуй »
Локальная версия даты 31. 12.18 Попробуй »
Локальная версия времени 17:41:00 Попробуй »
%% Символ % % Попробуй »
%G ИСО 8601 год 2018 Попробуй »
%u ISO 8601 рабочий день (1-7) 1 Попробуй »
Номер недели ISO 8601 (01-53) 01 Попробуй »

❮ Предыдущий Следующий ❯


NEW

Мы только что запустили
Видео W3Schools

Узнать

ВЫБОР ЦВЕТА
КОД ИГРЫ

Играть в игру




Top Tutorials
Учебное пособие по HTML
Учебное пособие по CSS
Учебное пособие по JavaScript
Учебное пособие
Учебное пособие по SQL
Учебное пособие по Python
Учебное пособие по W3. CSS
Учебное пособие по Bootstrap
Учебное пособие по PHP
Учебное пособие по Java
Учебное пособие по C++
Учебное пособие по jQuery

9003 900 Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery

Основные примеры
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery


ФОРУМ | О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.

Copyright 1999-2022 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.

Модуль Python datetime — GeeksforGeeks

В Python дата и время не являются самостоятельным типом данных, но модуль с именем datetime может быть импортирован для работы с датой так же, как и со временем. Модуль Python Datetime встроен в Python, поэтому нет необходимости устанавливать его извне.

Модуль Python Datetime предоставляет классы для работы с датой и временем. Эти классы предоставляют ряд функций для работы с датами, временем и временными интервалами. Дата и дата-время являются объектами в Python, поэтому, когда вы манипулируете ими, вы на самом деле манипулируете объектами, а не строками или временными метками.

Модуль DateTime подразделяется на 6 основных классов —

  • дата — идеализированная наивная дата, предполагающая, что текущий григорианский календарь всегда был и всегда будет действовать. Его атрибутами являются год, месяц и день.
  • время – Идеализированное время, не зависящее от какого-либо конкретного дня, при условии, что в каждом дне ровно 24*60*60 секунд. Его атрибутами являются часы, минуты, секунды, микросекунды и tzinfo.
  • дата-время - Это комбинация даты и времени, а также атрибутов год, месяц, день, час, минута, секунда, микросекунда и tzinfo.
  • timedelta — Продолжительность, выражающая разницу между двумя экземплярами даты, времени или даты и времени с разрешением в микросекундах.
  • tzinfo — Предоставляет объекты с информацией о часовом поясе.
  • часовой пояс — класс, который реализует абстрактный базовый класс tzinfo как фиксированное смещение от UTC (Новое в версии 3.2).

Класс даты

Класс даты используется для создания объектов даты в Python. Когда создается экземпляр объекта этого класса, он представляет дату в формате ГГГГ-ММ-ДД. Конструктору этого класса нужны три обязательных аргумента: год, месяц и дата.

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

 class datetime.date(year, month, day) 

Аргументы должны быть в следующем диапазоне –  

  • MINYEAR <= year <= MAXYEAR
  • 1 <= месяц <= 12
  • 1 <= день <= количество дней в данном месяце и году

Примечание . Если аргумент не является целым числом, он вызовет ошибку типа, а если он находится за пределами диапазон будет поднят ValueError.

Пример 1: Объект даты, представляющий дату, в Python

Python3

Из DateTime 0003

MY_DATE = Дата ( 1996 , 12 , 11 )

(

(

8. , my_date)

 

 

Вывод:  

 Дата, переданная в качестве аргумента: 1996-12-11 
2 Трассировка: Файл "/home/ccabfb570d9bd1dcd11dc4fe55fd6ba2.py", строка 14, в моя_дата = дата (1996, 12, 39) ValueError: день выходит за пределы допустимого диапазона для месяца Traceback (последний последний вызов): Файл "/home/53b974e10651f1853eee3c004b48c481.py", строка 18, в my_date = дата('1996', 12, 11) TypeError: требуется целое число (получен тип str)

Пример 2: Получить текущую дату

Для возврата текущей локальной даты используется функция today() класса date. Функция today() имеет несколько атрибутов (год, месяц и день). Их можно распечатать по отдельности.

Python3

 

from datetime import date

 

today = date. today()

 

print ( "Сегодняшняя дата" , сегодня)

Вывод

 Сегодняшняя дата 2021-08-19 
Месяц, Год 3:Получить 3:011 Примеры0012

Мы можем получить атрибуты года, месяца и даты из объекта даты, используя атрибут года, месяца и даты класса даты.

Python3

from datetime import date

 

today = date.today()

 

print ( " Текущий год:" , сегодня.год)

Печать ( "Текущий месяц:" , сегодня. Монт)

Печать ( "День текущего

 Текущий год: 2021
Текущий месяц: 8
Текущий день: 19 

Пример 4: Получить дату из метки времени

Мы можем создать объекты даты из метки времени y=используя метод fromtimestamp(). Временная метка — это количество секунд с 1 января 19 года.70 по UTC до определенной даты.

Python3

from datetime import datetime

 

date_time = datetime.fromtimestamp( 1887639468 )

print ( "Дата-время по отметке времени:" , дата_время)

Вывод

 Дата и время из метки времени: 2029-10-25 16:17:48 

Пример 5: Преобразование даты в строку

Мы можем преобразовать объект даты в строковое представление, используя две функции isoformat() и strftime().

Python3

from datetime import date

    

today = date.today()

    

STR = Дата. Asoformat (сегодня)

Печать ( «Строковая представление» , STR )

(998)

(998)

8 (998)

8 (998)

8 (998)

8 (998)

(998)

(998) Str ))

Выход

 Представление строки 2021-08-19
 

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

Function Name  Description
ctime() Return a string representing the date
fromisocalendar() Returns a date corresponding to the ISO calendar
fromisoformat() Возвращает объект даты из строкового представления даты. 0122
fromtimestamp() Returns a date object from the POSIX timestamp
isocalendar() Returns a tuple year, week, and weekday
isoformat() Returns the string representation of the date
isoweekday() Возвращает день недели в виде целого числа, где понедельник равен 1, а воскресенье равно 7
replace() Изменяет значение объекта даты с заданным параметром
strftime() Возвращает строковое представление даты с заданным форматом date
toordinal() Возвращает пролептический порядковый номер даты по григорианскому календарю, где 1 января года 1 имеет порядковый номер 1 Воскресенье 6

Класс времени

Класс времени создает объект времени, который представляет местное время независимо от дня недели.

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

class datetime. time(час=0, минута=0, секунда=0, микросекунда=0, tzinfo=нет, *, fold=0)

Все аргументы являются необязательными. tzinfo может быть None, в противном случае все атрибуты должны быть целыми числами в следующем диапазоне – 

  • 0 <= час < 24
  • 0 <= минута < 60
  • 0 <= second < 60
  • 0 <= microsecond < 1000000
  • fold in [0, 1]

Example 1: Time object representing time in Python

Python3

 

from DateTime Импорт Время

MY_TIME = ( 13 , 24 , 56 0008 )

 

print ( "Entered time" , my_time)

 

my_time = time(minute = 12 )

Печать ( "\ ntime с одним аргументом" , my_time)

MY_TIME = ()

( ()

0009 "\nВремя без аргумента" , my_time)

 

 

Вывод:

4:

Время с одним аргументом 00:12:00 Время без аргумента 00:00:00

 Трассировка (последний последний вызов):
  Файл "/home/95ff83138a1b3e67731e57ec6ddef25. py", строка 21, в
    печать (время (час = 26))
ValueError: час должен быть в диапазоне 0..23
Traceback (последний последний вызов):
  Файл "/home/fcee9ba5615b0b74fc3ba39ec9a789fd.py", строка 21, в
    печать (время (час = '23'))
TypeError: требуется целое число (получен тип str) 

Пример 2: Получить часы, минуты, секунды и микросекунды

После создания объекта времени его атрибуты также можно распечатать отдельно.

Python3

из DateTime Импорт

80009 = (9999 80009 = (9

= (9

= (9

9, 34 , 56 )

Печать ( " , время. Черт)

(9999999999999999999999999999999999999999998" 9999999999999999999999999999999998 "999999999999999999999999999998" 9 999999999999999999999999999999999998 ". " , Time.Minute)

Печать ( " Второй = " , время. Сторонняя)

Печать ( " MicroSecond = " , время.

Вывод:  

 час = 11
минута = 34
секунда = 56
microsecond = 0 

Пример 3: Преобразование объекта времени в строку

Мы можем преобразовать объект времени в строку, используя метод isoformat().

Python3

Из DateTime Импорт

= (9915 12 = (9

= (9

= (

= (

= (

, 24 , 36 , 1212 )

STR = . ASOFORMAT () 9989999999899898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898998998998998998998998998998998998998998998. : « , STR )

Печать ( Тип ( Str )

8

8

7980479

 Представление строки: 12:24:36.001212
 

List of Time class Methods

Function Name Description
dst() Returns tzinfo. dst() is tzinfo is not None
fromisoformat () Возвращает объект времени из строкового представления времени
isoformat() Возвращает строковое представление времени из объекта времени
replace() Изменяет значение объекта времени с заданным параметром
strftime() Возвращает строковое представление времени в заданном формате tzinfo.tzname() означает, что tzinfo не равно None
utcoffset() Возвращает tzinfo.utcffsets(), если tzinfo не равно None

Класс Datetime

Класс DateTime содержит информацию как о дате, так и о времени. Подобно объекту даты, datetime предполагает текущий григорианский календарь, расширенный в обоих направлениях; как и объект времени, datetime предполагает, что в каждом дне ровно 3600*24 секунды.

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

class datetime. datetime(год, месяц, день, час=0, минута=0, секунда=0, микросекунда=0, tzinfo=None, *, fold=0) 
 

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

  • MINYEAR <= год <= MAXYEAR
  • 1 <= месяц <= 12
  • 1 <= день <= количество дней в данный месяц и год
  • 0 <= час < 24
  • 0 <= минута < 60
  • 0 <= секунда < 60
  • 0 <= микросекунда < 1000000
  • умножить на [0, 1]
  • Аргумент, отличный от целого, вызовет ошибку TypeError, а передача аргументов вне диапазона вызовет ошибку ValueError.

    Пример 1. Объект DateTime, представляющий DateTime в Python 

    Python3

     

    из datetime import datetime

     

    a = datetime( 1999 , 12 , 12 )

    print (a )

    A = DateTime ( 1999 , 12 , 12 , 12 , 12 , 12 , 12 , 12 , 0009 12 , 12 , 342380 )

    print (a)

    Output:  

     1999-12-12 00:00: 00
    1999-12-12 12:12:12. 342380 

    Пример 2. Получение года, месяца, часа, минуты и метки времени

    После создания объекта DateTime его атрибуты также можно распечатать отдельно.

    Python3

    from datetime import datetime

     

    a = datetime( 1999 , 12 , 12 , 12 , 12 , 12 )

    Печать ( "Год =" , A.year)

    Печать ()

    .0009 "Месяц =" , A. Month)

    Печать ( "час =" , A.Hour)

    Печать ( "Минут =" , A.Minute)

    Печать ( "TimeStamp =" , A.TimestAmp ())

    Выход:

    1 год = 1999 год = 1999 год = 1999 год = 1999 год = 1999 год.
    месяц = ​​12
    час = 12
    минута = 12
    метка времени = 
  • 0732.0
  • Пример 3: Текущая дата и время

    Вы можете напечатать текущую дату и время, используя функцию Datetime.now(). Функция now() возвращает текущую локальную дату и время.

    Python3

    from datetime import datetime

     

    today = datetime. now()

     

    print ( " Текущая дата и время:" , сегодня)

    Выход:

     Текущая дата и время-2019-10-25 11: 12: 11,289834 

    Пример 4: Конверт Python DateTime To STRING 9002

    . строку в Python, используя методы datetime.strftime и datetime.isoformat.

    Python3

    из datetime импорт datetime as dt

     

    now = dt.now()

     

    string = dt.isoformat(now)

    print (string)

    print ( тип (строка))

    Выход

     2021-08-19T18:13:25. 346259
     

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

    99
    Имя функции Описание
    astimezone() Возвращает объект DateTime, содержащий информацию о часовом поясе.
    comb() Объединяет объекты даты и времени и возвращает объект DateTime
    ctime() Возвращает строковое представление даты и времени объект
    из изоформата() Возвращает объект даты и времени из строкового представления даты и времени
    fromordinal() Возвращает объект даты из пролептического григорианского порядкового номера, где 1 января года 1 имеет порядковый номер 1. Часы, минуты, секунды , и микросекунды равны 0
    fromtimestamp() Возвращает дату и время из временной метки POSIX
    isocalendar() Возвращает год, неделю и день недели в кортеже
    00121 isoformat() Возвращает строковое представление даты и времени
    isoweekday() Возвращает день недели в виде целого числа, где понедельник равен 1, а воскресенье равно 7
    now()2 9012 Возвращает текущий локальная дата и время с параметром tz
    replace() Изменяет определенные атрибуты объекта DateTime
    strftime() Возвращает строковое представление объекта DateTime в заданном формате
    strptime() Returns a DateTime object corresponding to the date string
    time() Return the Time class object
    timetuple() Returns an object of type time. struct_time
    timetz() Вернуть объект класса Time
    Today() Вернуть локальную DateTime с tzinfo как None года 1 имеет порядковый номер 1
    tzname() Returns the name of the timezone
    utcfromtimestamp() Return UTC from POSIX timestamp
    utcoffset() Returns the UTC offset
    utcnow() Возвращает текущую дату и время UTC
    weekday() Возвращает день недели в виде целого числа, где понедельник равен 0, а воскресенье равно 6

    Класс Timedelta

    Класс Python timedelta используется для вычисления разницы в датах, а также может использоваться для манипуляций с датами в Python. Это один из самых простых способов выполнения манипуляций с датами.

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

    класс datetime. timedelta(дни=0, секунды=0, микросекунды=0, миллисекунды=0, минуты=0, часы=0, недели=0)
    Возвращает: Дата

    Пример 1. Добавление дней к объекту datetime

    Python3

     

    from datetime import datetime, timedelta

     

     

    ini_time_for_now = datetime.now()

     

    print ( "initial_date " , str (ini_time_for_now))

     

    future_date_after_2yrs = ini_time_for_now ini_time_for_now0009 + timedelta(days = 730 )

     

    future_date_after_2days = ini_time_for_now + timedelta(days = 2 )

    печать ( 'future_date_after_2yrs:' , str (future_date_after_2yrs))

    5 печать ( 'future_date_after_2days:' , STR (Future_Date_after_2Days))

    Выход:

    198 

    :

  • 198

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

    Пример 2: Разница между двумя датами и временем

    Разницу в дате и времени также можно найти с помощью этого класса.

    Python3

    from datetime import datetime, timedelta

     

    ini_time_for_now = datetime.now()

     

    print ( "initial_date " , str (ini_time_for_now))

     

    new_final_time =

    8 ini_time_09 +

    8

    8

    0009 \

         timedelta(days = 2 )

     

    print ( "new_final_time" , str (new_final_time))

    Печать ( 'Разница во времени:' , Str (New_final_time -

    ini_time_for_now))

    Вывод:  

     initial_date 2019-10-25 12:02:32. 799814
    new_final_time 27.10.2019 12:02:32.799814
    Разница во времени: 2 дня, 0:00:00 

    Операции, поддерживаемые TimeDelta Class

    Оператор Описание
    Дострой (-) Subtracts and returns two timedelta objects
    Multiplication (*) Multiplies timedelta object with float or int 
    Division (/) Divides the timedelta object with float or int
    Floor division ( //) Делит объект timedelta на число с плавающей запятой или int и возвращает значение int нижнего предела вывода
    Модуль (%) Делит два объекта timedelta и возвращает остаток
    +(timedelta) Returns the same timedelta object
    -(timedelta) Returns the resultant of -1*timedelta
    abs(timedelta) Returns the +(timedelta) if timedelta. days > 1=0 else возвращает -(timedelta)
    str(timedelta) Возвращает строку в формате (+/-) day[s],  HH:MM:SS.UUUUUU
    repr(timedelta) Возвращает строковое представление в виде вызова конструктора

    Формат даты и времени

    Форматирование даты и времени может быть очень необходимо, так как представление даты может отличаться от места к месту. Например, в некоторых странах это может быть гггг-мм-дд, а в другой стране это может быть дд-мм-гггг. Для форматирования Python Datetime можно использовать функции strptime и strftime.

    Python Datetime strftime

    Метод strftime() преобразует заданную дату, время или объект даты и времени в строковое представление заданного формата.

    Пример: Формат даты и времени Python

    Python3

     

     

    from datetime import datetime as dt

     

    now = dt. now()

    print ( "Без форматирования" , теперь)

    S = Now.strftime ( " %A %M %-y" )

    " %M %-y" )

    "0015 Печать ( '\ nexample 1:' , S)

    S = Сейчас.

    Печать ( '\ Nexample 2:' , S)

    S = сейчас.

    печать ( '\nПример 3:' , S)

    S = теперь. :' , s)

    Вывод

     Без форматирования 2021-08-19 18:16:25.881661
    Пример 1: Четверг, 08 2021 г.
    Пример 2: Чт 8 21
    Пример 3: 6 вечера 25
    Пример 4: 18:16:25 

    Примечание: Для получения дополнительной информации см. метод strftime().

    Python DateTime strptime

    strptime() создает объект datetime из заданной строки.

    Example: DateTime strptime

    Python3

    from datetime import datetime

       

    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_data = «%d/%m/%y%h:%m:%s.%f»

    для I в Time_data:

    9000 (

    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

    Часовые пояса в DateTime можно использовать в том случае, когда требуется отображать время в соответствии с часовым поясом определенного региона. Это можно сделать с помощью модуля pytz Python. Этот модуль выполняет функции преобразования даты и времени и помогает пользователям обслуживать международные клиентские базы.

    Python3

    from datetime import datetime

    from pytz import timezone

     

    format = "%Y- %m-%d%h:%m:%s%z%z "

    Now_UTC = DateTime.Now (Timezone ( 'UTC' ))

    (now_utc.strftime( format ))

     

    timezones = [ 'Asia/Kolkata' , 'Europe/Kiev' , ' America/new_york ' ]

    для Tzone в часовые пояса:

    Теперь_ас -

    now_utc. astimezone(timezone(tzone))

         print (now_asia.strftime( format ))

    Output

     2021-08-19 18 :27:28 UTC+0000
    2021-08-19 23:57:28 IST+0530
    2021-08-19 21:27:28 Восточное восточное время +0300
    2021-08-19 14:27:28 EDT-0400 

    11.2.2 Типы DATE, DATETIME и TIMESTAMP

    11.2.2 Типы DATE, DATETIME и TIMESTAMP

    DATE , DATETIME и TIMESTAMP типы связаны между собой. Эта секция описывает их характеристики, чем они похожи и чем они отличаются. MySQL распознает DATE , DATETIME и TIMESTAMP значения в нескольких форматах, описанных в Раздел 9.1.3, «Литералы даты и времени». Для ДАТА и ДАТАВРЕМЯ диапазон описания, «поддерживается» означает, что хотя более ранние значения могут работать, нет никакой гарантии.

    Тип DATE используется для значений с датой часть, но не часть времени. MySQL извлекает и отображает ДАТА значения в ' ГГГГ-ММ-ДД ' формат. Поддерживаемый диапазон: '1000-01-01' на '9999-12-31' .

    Тип DATETIME используется для значений, которые содержат как дату, так и время. MySQL извлекает и отображает DATETIME значений в ' ГГГГ-ММ-ДД формат чч:мм:сс ' . Поддерживаемый диапазон '1000-01-01 00:00:00' от до '9999-12-31 23:59:59' .

    Тип данных TIMESTAMP используется для значений которые содержат как дату, так и время. TIMESTAMP имеет диапазон '1970-01-01 00:00:01' UTC до '2038-01-19 03:14:07' 900:09 по всемирному координированному времени.

    A DATETIME или TIMESTAMP значение может включать завершающую часть доли секунды до микросекунды (6 цифр) точность. В частности, любое дробное часть значения, вставленного в DATETIME или Столбец TIMESTAMP сохраняется, а не отброшен. С включенной дробной частью формат для эти значения ' ГГГГ-ММ-ДД чч:мм:сс [. дробь ]' , диапазон значений DATETIME составляет '1000-01-01 00:00:00.000000' до '9999-12-31 23:59:59.999999' и диапазон для TIMESTAMP значение равно '1970-01-01 00:00:01.000000' от до '2038-01-19 03:14:07.999999' . Дробная часть всегда должна быть отделяется от остального времени десятичной точкой; нет другого распознается разделитель долей секунды. Для информации о поддержке дробных секунд в MySQL см. Раздел 11.2.6, «Доли секунд в значениях времени».

    TIMESTAMP и DATETIME типы данных предлагают автоматическую инициализацию и обновление до текущая дата и время. Для получения дополнительной информации см. Раздел 11.2.5, «Автоматическая инициализация и обновление для TIMESTAMP и DATETIME».

    MySQL преобразует значений TIMESTAMP из текущего часового пояса в UTC для хранения и обратно из UTC в текущий часовой пояс для поиска. (это не происходит для других типа DATETIME .) По умолчанию текущим часовым поясом для каждого соединения является время сервера. часовой пояс может быть установлен для каждого соединения отдельно. Пока настройка часового пояса остается неизменной, вы получаете то же значение вы храните. Если вы сохраните значение TIMESTAMP , а затем измените часовой пояс и получите значение, полученное значение отличается от значения, которое вы сохранили. Этот происходит потому, что тот же часовой пояс не использовался для преобразования в оба направления. Текущий часовой пояс доступен как значение из часовой пояс система переменная. Для получения дополнительной информации см. Раздел 5.1.15, «Поддержка часовых поясов MySQL Server».

    В MySQL 8.0.19 и более поздних версиях вы можете указать смещение часового пояса при вставке TIMESTAMP или Значение DATETIME в таблицу. Видеть Раздел 9.1.3, «Литералы даты и времени», для получения дополнительной информации. и примеры.

    Неверный ДАТА , ДАТАВРЕМЯ или Значения TIMESTAMP преобразуются в «нулевое» значение соответствующего типа ( '0000-00-00' или '0000-00-00 00:00:00' ), если режим SQL позволяет это преобразование. Точное поведение зависит от того, какой из строгих режимов SQL и режим SQL NO_ZERO_DATE включены; см. раздел 5.1.11, «Режимы SQL сервера».

    В MySQL 8.0.22 и более поздних версиях вы можете конвертировать ВРЕМЕННАЯ МЕТКА значений в UTC DATETIME значений при получении их с помощью CAST() с ВО ВРЕМЯ Оператор ZONE , как показано здесь:

     mysql> ВЫБЕРИТЕ столбец,
         > CAST(col AT TIME ZONE INTERVAL '+00:00' AS DATETIME) AS ut
         > ИЗ ЗАКАЗА ПО ИДЕНТИФИКАТОРу;
    +------------------------------------+-------+
    | кол | ут |
    +------------------------------------+-------+
    | 2020-01-01 10:10:10 | 2020-01-01 15:10:10 |
    | 2019-12-31 23:40:10 | 2020-01-01 04:40:10 |
    | 2020-01-01 13:10:10 | 2020-01-01 18:10:10 |
    | 2020-01-01 10:10:10 | 2020-01-01 15:10:10 |
    | 2020-01-01 04:40:10 | 2020-01-01 09:40:10 |
    | 2020-01-01 18:10:10 | 2020-01-01 23:10:10 |
    +--------------------------------------------------+-------+ 

    Для получения полной информации о синтаксисе и дополнительных примеры смотрите в описании Функция CAST() .

    Помните об определенных свойствах интерпретации значения даты в MySQL:

    • MySQL допускает «расслабленный» формат для значений указывается как строка, в которой любой знак пунктуации может использоваться в качестве разделителя между частями даты или частями времени. В некоторых случаях этот синтаксис может быть обманчивым. Например, значение, такое как '10:11:12' может выглядеть как значение времени из-за : , но интерпретируется как год '2010-11-12' , если используется в контексте даты. Значение '10:45:15' преобразуется в '0000-00-00' потому что '45' не является действительным месяцем.

      Единственный разделитель, распознаваемый между частью даты и времени а доля секунды - десятичная точка.

    • Сервер требует, чтобы значения месяца и дня были действительными, и не только в диапазоне от 1 до 12 и от 1 до 31 соответственно. При отключенном строгом режиме недопустимые даты, такие как '2004-04-31' преобразуются в '0000-00-00' и генерируется предупреждение. При включенном строгом режиме неверные даты вызывают ошибку. Чтобы разрешить такие даты, включите РАЗРЕШЕННЫЕ_НЕДОПУСТИМЫЕ_ДАТЫ . Видеть Раздел 5.1.11, «Режимы SQL сервера», для получения дополнительной информации.

    • MySQL не принимает значения TIMESTAMP которые включают ноль в столбце дня или месяца или значениях которые не являются допустимой датой. Единственное исключение из этого правила это специальное «нулевое» значение '0000-00-00 00:00:00' , если режим SQL позволяет это значение. Точное поведение зависит от того, что если любой из строгого режима SQL и NO_ZERO_DATE Режим SQL включено; см. раздел 5.1.11, «Режимы SQL сервера».

    • Даты, содержащие двузначные значения года, неоднозначны, потому что век неизвестен. MySQL интерпретирует двузначные значения года используя эти правила:

      См. также Раздел 11.2.8, «Двузначное обозначение года в дате».

    Основные операции DateTime в Python | by Munia Humaira

    Photo by Brooke Lark on Unsplash

    Иногда работа с данными, содержащими дату и время, может быть утомительной работой, к счастью, есть встроенный способ помочь нам в работе. Python предоставляет модуль datetime , который позволяет нам разными способами манипулировать датой и временем.

    Нам нужно рассмотреть пять основных классов объектов в этом модуле, которые нам в конечном итоге потребуются в зависимости от работы, которую мы хотим выполнять. После этого мы обсудим несколько примеров, поясняющих задачи занятий. Классы следующие - 9

  • datetime.time )
  • datetime.datetime : Это позволяет нам управлять комбинацией даты и времени (месяц, день, год, час, секунда, микросекунда).
  • datetime.tzinfo : абстрактный класс для работы с часовыми поясами. Эти типы объектов являются неизменяемыми. Например, для учета разных часовых поясов и/или перехода на летнее время.
  • datetime.timedelta : это разница между двумя экземплярами даты, времени или даты и времени; разрешение ca
  • Поскольку datetime включает в себя, позволяет нам иметь дело как с датой, так и со временем, поэтому сначала давайте посмотрим, как ведет себя этот объект. datetime является как модулем, так и классом внутри этого модуля. Мы импортируем класс datetime из модуля datetime и распечатаем текущую дату и время, чтобы рассмотреть их поближе. Мы можем сделать это, используя datetime Функция .now(). Мы напечатаем наш объект datetime .

     # импортировать класс datetime из модуля datetime 
    from datetime import datetime

    # получить сегодняшнюю дату тогда мы можем написать:

     print('Type :- ',type(today)) 

    Итак, мы видим сверху, что сегодня действительно объект datetime класса datetime.

    Из приведенного выше примера мы можем понять, как следует дата и время объекты работают. дата будет работать только с датами, исключая время и время будет работать наоборот.

     dt_nw = datetime.now() 

    # чтобы получить час из даты и времени
    print('Hour: ', dt_nw.hour)

    # чтобы получить минуты из даты и времени
    print('Minute: ', dt_nw.minute)

    Из datetime мы также можем получить день недели, используя его . weekday() функция как число. Но мы можем преобразовать это в текстовый формат (т. е. понедельник, вторник, среда…) с помощью модуля календаря и метода с именем 9.0478 .day_name() .

    Сначала мы импортируем модуль календаря , а затем узнаем, что такое месяц и год, и проделаем вышеупомянутые операции.

     # импорт модуля календаря 
    импорт календаря

    my_date= datetime.now()
    # Чтобы получить месяц из даты
    print('Month: ', my_date.month)

    # Чтобы получить месяц из года
    print('Year: ', my_date.year)

    # Чтобы получить день месяца
    print('Day of Month:', my_date.day)

    # чтобы получить название дня (числом) из даты
    print('День недели (число): ', my_date.weekday())

    # чтобы получить название дня из даты
    print('День недели ( name): ', calendar.day_name[my_date.weekday()])

    Теперь нам нужно понять два типа объектов datetime ;

    1. Осведомленный — Осведомленный объект обладает знаниями, необходимыми для работы с неоднозначным временем. Он содержит информацию о часовом поясе и летнем времени, чтобы он мог определить свое местоположение относительно других осведомленных объектов.
    2. Простой — с ним проще работать. Потому что он не содержит информации о разных часовых поясах и переходе на летнее время. Операция просто зависит от программы.

    Для программ, которым требуются осведомленные объекты, объекты datetime , date и time имеют необязательный атрибут информации о часовом поясе, tzinfo . Но tzinfo — это абстрактный класс. Имея дело с этим, вы должны решить, какие именно методы необходимы. Потому что это полностью зависит от использования осознанных дата-время объектов.

    Но управление часовыми поясами упрощается благодаря модулю pytz . Это помогает нам справляться с преобразованиями между часовыми поясами и обрабатывает летнее время в местах, где это используется. Давайте рассмотрим пример:

     # импорт часового пояса из модуля pytz 
    из pytz import timezone

    # создание часового пояса UTC
    utc = timezone('UTC')

    # локализация даты и времени
    loc = utc.localize(datetime(2020) , 1, 1, 3, 50, 0))
    print(loc)

    # Преобразование локализованных даты и времени в часовой пояс Азии/Дакки
    dhaka = timezone("Asia/Dhaka")
    print(loc.astimezone(dhaka))

    # Преобразование локализованных даты и времени в часовой пояс Европы/Берлина
    berlin = timezone('Europe/Berlin')
    print(loc.astimezone(berlin))

    Мы использовали функцию localize() для добавления часового пояса к объекту datetime . Функция astimezone() преобразует существующий местный часовой пояс в любой другой указанный часовой пояс.

    Иногда в программе нам может понадобиться указать оставшееся время или промежуток времени. В этом случае мы всегда можем использовать объектов timedelta . Мы можем использовать это, чтобы манипулировать датами или временем, добавляя и вычитая из них. Давайте рассмотрим несколько примеров:

     #import timedelta 
    from datetime import timedelta
    print(timedelta(дни= 365, часы= 12, минуты= 30))
     # получить текущее время 
    now = datetime.now()
    print ("Сегодняшняя дата и время: ", ул(сейчас))

    # добавить 365 дней к текущей дате
    future_date_after_one_year = now + timedelta(days = 365)
    print('Дата и время через год: ', future_date_after_one_year)

    #вычесть 7 дней из текущей даты
    seven_days_ago = now - timedelta( days = 7)
    print('Дата и время семь дней назад: ', seven_days_ago)
    # print('seven_days_ago тип объекта: ', type(seven_days_ago))

    Вот как мы можем работать с объектами timedelta . В большинстве научных скриптов/кейсов дельта всегда означает разницу между двумя вещами.

    datetime включает два метода, strptime() и strftime() , для преобразования объектов из строк в объекты datetime и наоборот. strptime() может считывать строки с информацией о дате и времени и преобразовывать их в объекты datetime, а strftime() преобразует объекты datetime обратно в строки.

     # импорт даты и времени 
    из даты и времени импорт даты и времени

    date_str = "2 января, 2020"

    # формат даты 9# текущая дата и время
    now = datetime.now()

    # время в формате ЧЧ:ММ:СС
    time = now.strftime("%H:%M:%S")
    print("Time:", time)

    # формат даты
    date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
    print("Дата и время:",date_time)

    При работе с данные, очень часто приходится иметь дело с метками времени. Возможно, вы хотите хранить свои данные в формате временной метки Unix. Мы будем использовать datetime timestamp() для этого.

     # получить текущую дату 
    now = datetime.now()

    # преобразовать текущую дату в метку времени , временная метка)

    Аналогично, из временной метки мы можем преобразовать в объекты даты и времени.

     timestamp = 1577971124.673931 

    #convert timestamp to datetime object
    date_obj = datetime.fromtimestamp(timestamp)

    print("Сегодняшняя дата и время:", date_obj)

    Pandas является своего рода основным ингредиентом проектов по науке о данных в python, и это правильно. Это делает работу с датой и временем проще, чем любые другие методы.

    Гораздо проще преобразовать текстовые строки даты и времени в объекты pandas Datetime, используя to_datetime() .

    Эта функция достаточно хороша для преобразования строк в объекты даты и времени Python, автоматически определяя их форматы без необходимости определять их с помощью шаблонов strftime.

     # импортировать модуль pandas 
    импортировать pandas как pd

    # создать объект даты с помощью функции to_datetime() операции, которые можно выполнять с помощью панд с данными о дате и времени. Но для этого нужен отдельный пост. Тем не менее, я надеюсь, что этот пост дает начальные представления об операциях, которые мы можем выполнять с модулем datetime и pandas. Все используемые здесь коды можно найти в моей учетной записи GitHub https://github.com/muniah.

    Первоначально опубликовано на https://muniah.com 2 января 2020 г.

    Использование Python datetime для работы с датами и временем — Real Python создан командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание:

    Использование модуля Python datetime

    Работа с датами и временем — одна из самых больших проблем в программировании. Имея дело с часовыми поясами, переходом на летнее время и различными письменными форматами даты, может быть сложно отслеживать, на какие дни и время вы ссылаетесь. К счастью, встроенный Python 9Модуль 0478 datetime может помочь вам управлять сложной природой дат и времени.

    Из этого руководства вы узнаете:

    • Почему программирование с датами и временем так сложно
    • Какие функции доступны в модуле Python datetime
    • Как распечатать или прочитать дату и время в определенном формате
    • Как сделать арифметику с датами и временем

    Кроме того, вы разработаете аккуратное приложение для отсчета времени, оставшегося до следующего PyCon US!

    Бесплатный бонус: Нажмите здесь, чтобы получить нашу бесплатную памятку по Python, которая покажет вам основы Python 3, такие как работа с типами данных, словарями, списками и функциями Python.

    Начнем!

    Программирование с датами и временем

    Если вы когда-либо работали над программным обеспечением, которое должно было отслеживать время в нескольких географических областях, то вы, вероятно, понимаете, почему программирование со временем может быть такой проблемой. Фундаментальное несоответствие заключается в том, что компьютерные программы предпочитают совершенно упорядоченные и регулярные события, но то, как большинство людей используют время и ссылаются на него, крайне нерегулярно.

    Примечание: Если вы хотите узнать больше о том, почему со временем так сложно иметь дело, то в Интернете доступно множество замечательных ресурсов. Вот несколько хороших мест для начала:

    • Компьютерофил: проблема со временем и часовыми поясами
    • Работа с часовыми поясами: все, что вам не нужно знать
    • Сложность программирования временных данных

    Одним из замечательных примеров такого отклонения является переход на летнее время 9. 0479 . В Соединенных Штатах и ​​Канаде часы переводятся на один час вперед во второе воскресенье марта и на один час назад в первое воскресенье ноября. Однако так было только с 2007 года. До 2007 года часы переводились вперед в первое воскресенье апреля и переводились назад в последнее воскресенье октября.

    Все становится еще сложнее, если учесть часовых поясов . В идеале границы часовых поясов должны точно соответствовать линиям долготы. Однако по историческим и политическим причинам линии часовых поясов редко бывают прямыми. Часто районы, разделенные большими расстояниями, оказываются в одном часовом поясе, а соседние районы — в разных часовых поясах. Есть несколько часовых поясов с довольно причудливыми формами.