Учебники

16) Дата, время и дата и время

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

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

  • date — манипулировать просто датой (месяц, день, год)
  • время — время, независимое от дня (час, минута, секунда, микросекунда)
  • datetime — комбинация времени и даты (месяц, день, год, час, секунда, микросекунда)
  • timedelta — продолжительность времени, используемого для манипулирования датами
  • tzinfo— абстрактный класс для работы с часовыми поясами

В этом уроке мы узнаем

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

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

Рассмотрим следующие моменты перед выполнением кода даты и времени

from datetime import date

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

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

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

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

Давайте посмотрим пример

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

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

День
Номер недели
понедельник
0
вторник
1
среда
2
Четверг
3
пятница
4
суббота
5
Воскресенье
6

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

Python Текущая дата и время: сейчас () сегодня ()

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

Шаг 2) С помощью «DATETIME OBJECT» вы также можете вызвать временной класс.

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

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

И это даст мне только время. Итак, давайте запустим эту программу.

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

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

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

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

from datetime import date
from datetime import time
from datetime import datetime
def main():
    ##DATETIME OBJECTS
    #Get today's date from datetime class
    today=datetime.now()
    #print (today)
    # Get the current time
    #t = datetime.time(datetime.now())
    #print "The current time is", t
    #weekday returns 0 (monday) through 6 (sunday)
    wd=date.weekday(today)
    #Days start at 0 for monday
    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 ()

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

Шаг 1) Сначала мы увидим простой шаг, как отформатировать год. Лучше разобраться с примером.

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

  • Мы использовали » функцию strftime» для форматирования.
  • Эта функция использует другой управляющий код для вывода.
  • Каждый контрольный код напоминает различные параметры, такие как год, месяц, день недели и дата [(% y /% Y — год), (% a /% A — день недели), (% b /% B — месяц), (% d — день месяца)].
  • В нашем случае это («% Y»), который напоминает год, он печатает полный год с веком (например, 2018).

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

  1. % C- указывает местную дату и время
  2. % x- указывает местную дату
  3. % X- указывает местное время

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

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

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

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

#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print(now.strftime("%c"))
      print(now.strftime("%x"))
      print(now.strftime("%X"))
##### Time Formatting ####
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print(now.strftime("%I:%M:%S %p")) # 12-Hour:Minute:Second:AM
      print(now.strftime("%H:%M")) # 24-Hour:Minute

if __name__== "__main__":
    main()

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

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

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

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

  1. Написать заявление на импорт для timedelta
  2. Теперь напишите код для распечатки объекта из дельты времени, как показано на снимке экрана
  3. Запустите код. Timedelta представляет промежуток 365 дней, 8 часов и 15 минут и печатает то же самое

Смешение? Следующий шаг поможет

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

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

  • Используя today = date.today () мы получим сегодняшнюю дату
  • Мы знаем, что новый год всегда 1 января, но год может быть другим. Используя nyd = date (today.year, 1,1) мы сохраняем новый год в переменной nyd
  • if nyd <today: сравнивает, больше ли текущая дата, чем новый год. Если да, он входит в цикл while
  • ((today-nyd) .days) показывает разницу между текущей датой и новым годом в ДНЯХ

Учебник по дате и времени на Python: Timedelta, Datetime и Strftime

Выходные данные показывают, что «Новый год уже прошел 11 дней назад».

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

#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print (timedelta(days=365, hours=8, minutes=15))
# print today's date
print ("today is: " + str(datetime.now()))
# print today's date one year from now
print ("one year from now it will be:" + str(datetime.now() + timedelta(days=365)))
# create a timedelta that uses more than one argument
# print (in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4)))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
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 OBJECTS
    #Get today's date from datetime class
	today=datetime.now()
	#print today
	# Get the current time
	#t = datetime.time(datetime.now())
	#print "The current time is", t
	#weekday returns 0 (monday) through 6 (sunday)
        wd = date.weekday(today)
	#Days start at 0 for monday
        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()
#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print now.strftime("%c")
      print now.strftime("%x")
      print now.strftime("%X")
##### Time Formatting ####   
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print now.strftime("%I:%M:%S %p") # 12-Hour:Minute:Second:AM
      print now.strftime("%H:%M") # 24-Hour:Minute   

if __name__== "__main__":
    main()
#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print timedelta(days=365, hours=8, minutes=15)
# print today's date
print "today is: " + str(datetime.now())
# print today's date one year from now
print "one year from now it will be:" + str(datetime.now() + timedelta(days=365))
# create a timedelta that uses more than one argument
# print "in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print "New Year day is already went by %d days ago" % ((today - nyd).days)

Резюме

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

  • date — манипулировать просто датой (месяц, день, год)
  • время — время, независимое от дня (час, минута, секунда, микросекунда)
  • datetime — комбинация времени и даты (месяц, день, год, час, секунда, микросекунда)
  • timedelta — продолжительность времени, используемого для манипулирования датами
  • tzinfo— абстрактный класс для работы с часовыми поясами

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

  • Импорт объектов даты и времени перед выполнением кода является обязательным
  • Использование функции date.today для печати отдельной даты / месяца / года, а также индексации дня
  • Использование объекта date.time для получения времени в часах, минутах, секундах и миллисекундах

Форматирование тайм-аута с помощью функции str f time

  • Используйте «функцию времени str f», чтобы изменить формат года
  • Печать дня, даты, месяца и года отдельно,
  • Время вызова для любого формата 12 часов или 24 часа

Timedelta Объекты

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