Главная » Статьи » DateTime, TimeDelta, Strftime(Format): дата и время в Python с примерами

DateTime, TimeDelta, Strftime(Format): дата и время в Python с примерами

DateTime, TimeDelta, Strftime(Format): дата и время в Python с примерами

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

Классы datetime в Python подразделяются на 5 основных классов.

date — работа с простой датой (месяц, день, год)

time — время, независимое от дня (час, минута, секунда, микросекунда)

datetime — комбинация времени и даты (месяц, день, год, час, секунда, микросекунда)

timedelta — продолжительность времени, используемого для манипулирования датами

tzinfo— абстрактный класс для работы с часовыми поясами

В этом руководстве мы рассмотрим:

Как использовать классы Date и DateTime

Вывод даты с использованием date.today()

Текущая дата и время в Python: now() today()

Как отформатировать дату и время с помощью Strftime()

Как использовать Объекты Timedelta

Как использовать классы Date и DateTime

Шаг 1) Прежде чем запускать код для datetime, важно импортировать модули date time, как показано на скриншоте ниже.

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

from datetime import date

Эта строка сообщает интерпретатору Python, что из модуля datetime импортируется класс date. Мы не пишем код для этого функционала, а просто импортируем его для использования.

Шаг 2) Далее мы создаем экземпляр объекта даты.

Шаг 3) Далее мы выводим дату и запускаем код.

Вывод соответствует ожидаемому.

Вывод даты с использованием date.today()

Функция date.today имеет несколько свойств, связанных с ней. Мы можем вывести отдельно день / месяц / год и многое другое. Давайте рассмотрим пример:

Сегодняшний номер дня недели

Функция date.today() также дает номер дня недели. Вот таблица рабочих дней, которая начинается с понедельника 0 и заканчивается воскресеньем 6.

понедельник = 0

вторник = 1

среда = 2

четверг = 3

пятница = 4

суббота = 5

воскресенье = 6

Номер дня недели полезен для массивов, индекс которых зависит от дня недели.

Текущая дата и время в Python: now() today()

Шаг 1) Как и объекты Date, мы также можем использовать в Python объекты «DATETIME» . Он выдает дату вместе со временем в часах, минутах, секундах и миллисекундах.

Когда мы выполняем код для datetime, он выдает выходные данные с текущей датой и временем.

Шаг 2) С помощью «объекта DATETIME» вы также можете вызвать класс time.

Предположим, мы хотим вывести только текущее время без даты.

t = datetime.time(datetime.now())

Мы импортировали класс time. Мы присваиваем ему текущее значение времени, используя datetime.now(). Мы присваиваем значение текущего времени переменной t. И это даст нам только время. Итак, давайте запустим эту программу.

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

Шаг 3) Мы применим индексатор дня недели к массиву дней недели, чтобы узнать, какой сегодня день.

Оператору дней (wd) присваивается номер (0-6) в зависимости от текущего дня недели. Здесь мы объявили массив списка для дней (Mon, Tue, Wed…Sun). Используйте это значение индекса, чтобы узнать, какой сегодня день. В нашем случае это номер 2, и он представляет среду, поэтому на выходе мы получим «Which is a Wednesday».

Вот полный код для получения текущей даты и времени, используя datetime.

from datetime import date
from datetime import time
from datetime import datetime
def main(): ##Объект DATETIME #получаем сегодняшнюю дату из класса datetime today=datetime.now() #выводим (today) # Получаем текущее время #t = datetime.time(datetime.now()) #выводим "The current time is", t #день недели от 0 (понедельник) до 6 (воскресенье) wd=date.weekday(today) #Дни начинаются с 0 для понедельника days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"] print("Today is day number %d" % wd) print("which is a " + days[wd]) if __name__== "__main__": main()

Как отформатировать дату и время с помощью Strftime()

На данный момент мы узнали, как использовать в Python объекты datetime и date. Теперь мы узнаем, как использовать функцию форматирования времени и даты.

Шаг 1) Сначала мы рассмотрим, как отформатировать год. Вот пример:

Мы использовали для форматирования «функцию strftime».

Эта функция использует другой управляющий код для вывода.

Каждый управляющий код указывает различные параметры, такие как год, месяц, день недели и дата [(%y/%Y – Year), (%a/%A- weekday), (%b/%B- month), (%d — day of month)].

В нашем случае это («%Y»), который указывает год, он выводим полный год с веком (например, 2018).

Шаг 2) Теперь, если вы замените («%Y») на строчные буквы, т. е. («%y») и выполните код, выходные данные будут отображать только (18), а не (2018). Век года не будет отображаться как показано на скриншоте ниже.

Шаг 3) Функция Strf может объявлять отдельно дату, день, месяц и год. Также с небольшими изменениями в управляющем коде функции strftime вы можете отформатировать стиль текста.

Внутри функции strftime, если вы замените (%a) на заглавную A, т. е. (%A), вывод будет «Friday», а не просто «Fri».

Шаг 4) С помощью функции «Strftime» мы также можем получить локальное системное время, дату или и то, и другое.

%C — указывает местную дату и время

%x — указывает местную дату

%X — указывает местное время

В результате вы можете увидеть вывод, как и ожидалось.

Шаг 5) Функция strftime позволяет вам вызывать время в формате 24 часа или 12 часов.

Просто определив управляющий код, %I/H для часов, %M для минут, %S для секунд, можно вызвать время в разных форматах.

Время 12 часов объявляется, как [print now.strftime(«%I:%M:%S %P)].

24 часа объявляется, как [print now.strftime(«%H:%M»)].

Вот полный код для преобразования datetime в объект String.

#
#Пример файла для форматирования вывода даты и времени
#
from datetime import datetime
def main(): #Время и дата могут быть отформатированы с помощью набора предустановленных строк #Управляющие коды now= datetime.now() #получаем текущие дату и время #%c - локальные время и дата, %x-локальная дата, %X- локальное время print(now.strftime("%c")) print(now.strftime("%x")) print(now.strftime("%X"))
##### Форматирование времени #### #%I/%H - 12/24 часы, %M - минуты, %S - секунды, %p - локальное время AM/PM print(now.strftime("%I:%M:%S %p")) # 12-часов:минуты:секунды:AM print(now.strftime("%H:%M")) # 24-часов:минуты if __name__== "__main__": main()

Как использовать Объекты Timedelta

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

Помните, что эта функция предназначена не для вывода времени или даты, а для того, чтобы ВЫПОЛНЯТЬ РАСЧЕТЫ в будущем или прошлом. Давайте рассмотрим пример.

Шаг 1) Чтобы запустить Объект Timedelta, вам нужно сначала объявить оператор импорта, а затем выполнить код:

Указываем оператор импорта для timedelta

Теперь указываем код для вывода объекта из timedelta, как показано на снимке экрана

Запустите код. Timedelta представляет промежуток 365 дней, 8 часов и 15 минут и выводит то же самое

Смешение? Об этом в следующем шаге.

Шаг 2) Давайте получим текущие дату и время, чтобы проверить, как работает наш оператор импорта. Когда код выполняется, он выводим сегодняшнюю дату, что означает, что наш оператор импорта работает хорошо.

Шаг 3) Посмотрим, как мы можем получить дату через год с помощью Объекта Timedelta. Когда мы запускаем код, он выдает результат, как и ожидалось.

Шаг 4) Еще один пример того, как Timedelta может использоваться для расчета будущей даты из текущей даты и времени.

Шаг 5) Давайте рассмотрим более сложный пример. Я хотел бы определить, сколько дней прошло в новом году. Вот как мы будем действовать.

Используя today = date.today() мы получим сегодняшнюю дату

Мы знаем, что новый год всегда 1 января, но год может быть другим. Используя nyd=date(today.year, 1,1) мы сохраняем новый год в переменной nyd

if nyd

((today-nyd).days) показывает разницу между текущей датой и новым годом в ДНЯХ

Вывод — «New Year Day already went by 11 days ago».

Вот полный рабочий код:

#
# Пример файла для работы с объектом timedelta
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta # составляем базовый timedelta и выводим его
print (timedelta(days=365, hours=8, minutes=15))
# выводим сегодняшнюю дату
print ("today is: " + str(datetime.now()))
# выводим дату в одном годе от сегодняшней
print ("one year from now it will be:" + str(datetime.now() + timedelta(days=365)))
# создаем timedelta, который использует более, чем один аргумент
# выводим (in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4)))
# Сколько дней прошло с Нового Года?
today = date.today() # получаем текущую дату
nyd = date(today.year, 1, 1) # получаем день Нового года для того же года
# используем сравнение дат, чтобы определить, был ли уже в этом году Новый Год
# если да, используем функцию replace(), чтобы получить дату в следующем году
if nyd < today: print ("New Year day is already went by %d days ago" % ((today - nyd).days))

Пример Python 2

from datetime import date
from datetime import time
from datetime import datetime
def main(): ##Объект DATETIME #получаем сегодняшнюю дату из класса datetime today=datetime.now() #выводим сегодняшнюю дату # Получаем текущее время #t = datetime.time(datetime.now()) #выводим "The current time is", t #weekday выводит от 0 (monday) до 6 (sunday) wd = date.weekday(today) #Дни начинаются с нуля для понедельника days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"] print "Today is day number %d" % wd print "which is a " + days[wd] if __name__== "__main__": main()
#
#Пример файла для форматирования вывода даты и времени
#
from datetime import datetime
def main(): #Время и дата могут быть отформатированы с помощью набора предустановленных строк #Управляющий код now= datetime.now() #получаем текущие время и дату #%c - локальные время и дата, %x-локальная дата, %X- локальное время print now.strftime("%c") print now.strftime("%x") print now.strftime("%X")
##### Форматирование времени #### #%I/%H - 12/24 часы, %M - минуты, %S - секунды, %p - локальное время AM/PM print now.strftime("%I:%M:%S %p") # 12-часов:минуты:секунды:AM print now.strftime("%H:%M") # 24-часа:минуты if __name__== "__main__": main()
#
# Пример файла для работы с объектом timedelta
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta # составляем базовый timedelta и выводим его print timedelta(days=365, hours=8, minutes=15)
# выводим сегодняшнюю дату
print "today is: " + str(datetime.now())
# выводим дату в одном годе от сегодняшней
print "one year from now it will be:" + str(datetime.now() + timedelta(days=365))
# создаем timedelta, который использует более, чем один аргумент
# выводим "in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4))
# Сколько дней прошло с Нового Года?
today = date.today() # получаем текущую дату
nyd = date(today.year, 1, 1) # получаем день Нового года для того же года
# используем сравнение дат, чтобы определить, был ли уже в этом году праздник Нового Года
# если да, используем функцию replace(), чтобы получить дату в следующем году
if nyd < today: print "New Year day is already went by %d days ago" % ((today - nyd).days)

Заключение

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

date — работа с простой датой (месяц, день, год)

time — время, независимое от дня (час, минута, секунда, микросекунда)

datetime — комбинация времени и даты (месяц, день, год, час, секунда, микросекунда)

timedelta — продолжительность времени, используемого для манипулирования датами

tzinfo— абстрактный класс для работы с часовыми поясами

Использование объектов datetime

Импорт объектов datetime перед выполнением кода является обязательным

Функция date.today используется для вывода отдельной даты / месяца / года, а также индексации дня

Объект date.time используется для получения времени в часах, минутах, секундах и миллисекундах

Форматирование даты и времени с помощью функции Strftime

Используйте функцию Strftime, чтобы изменить формат года

Время может указываться в формате 12 часов или 24 часа

Объекты Timedelta

С помощью объектов timedelta вы можете оценить время как для будущего, так и для прошлого

Рассчитать общее количество дней, оставшихся до особого дня (дня рождения) от текущего времени

Рассчитать общее количество дней, прошедших с особого дня (день рождения) до текущего времени

Источник: https://www.guru99.com

Редакция: Команда webformyself.