В Python классы date, time и datetime предоставляют ряд функций для работы с датами, временем и временными интервалами. Date и datetime являются объектами в Python, поэтому, когда вы манипулируете ими, вы фактически манипулируете объектами, а не строками или временными метками. Всякий раз, когда вы манипулируете датами или временем, вам нужно импортировать функцию datetime.
Классы datetime в Python подразделяются на 5 основных классов.
- date — манипулировать просто датой (месяц, день, год)
- время — время, независимое от дня (час, минута, секунда, микросекунда)
- datetime — комбинация времени и даты (месяц, день, год, час, секунда, микросекунда)
- timedelta — продолжительность времени, используемого для манипулирования датами
- tzinfo— абстрактный класс для работы с часовыми поясами
В этом уроке мы узнаем
- Как использовать класс Date & DateTime
- Печать даты с использованием date.today ()
- Python Текущая дата и время: сейчас () сегодня ()
- Как отформатировать дату и время с помощью Strftime ()
- Как использовать объекты Timedelta
Как использовать класс Date & DateTime
Шаг 1 ) Прежде чем запускать код для datetime, важно импортировать модули даты и времени, как показано на скриншоте ниже.
Эти операторы импорта являются предопределенными частями функциональности в библиотеке Python, которые позволяют вам манипулировать датами и временем без написания какого-либо кода.
Рассмотрим следующие моменты перед выполнением кода даты и времени
from datetime import date
Эта строка сообщает интерпретатору Python, что из модуля datetime импортируется класс даты. Мы не пишем код для этой функциональности даты, увы, просто импортируем его для нашего использования.
Шаг 2 ) Затем мы создаем экземпляр объекта даты.
Шаг 3 ) Далее мы печатаем дату и запускаем код.
Вывод соответствует ожидаемому.
Печать даты с использованием date.today ()
date.today
Функция имеет несколько свойств, связанных с ней. Мы можем напечатать индивидуальный день / месяц / год и многое другое
Давайте посмотрим пример
Сегодняшний номер дня недели
Функция date.today () также дает номер дня недели. Вот таблица рабочих дней, которая начинается с понедельника 0 и воскресенья 6
Номер дня недели полезен для массивов, индекс которых зависит от дня недели.
Python Текущая дата и время: сейчас () сегодня ()
Шаг 1) Как и объекты Date, мы также можем использовать «DATETIME OBJECTS» в Python. Это дает дату вместе со временем в часах, минутах, секундах и миллисекундах.
Когда мы выполняем код для datetime, он выдает выходные данные с текущей датой и временем.
Шаг 2) С помощью «DATETIME OBJECT» вы также можете вызвать временной класс.
Предположим, мы хотим напечатать только текущее время без даты.
t = datetime.time(datetime.now())
- Мы импортировали временной класс. Мы будем присваивать ему текущее значение времени, используя datetime.now ()
- Мы присваиваем значение текущего времени переменной t.
И это даст мне только время. Итак, давайте запустим эту программу.
Итак, вы можете видеть, что здесь у меня есть дата и время. А потом следующая строка, у меня есть только время само по себе
Шаг 3) Мы применим наш индексатор дня недели к массиву наших дней недели, чтобы узнать, какой сегодня день.
- Оператору будних дней (wd) присваивается номер от номера (0-6) в зависимости от текущего дня недели. Здесь мы объявили массив списка за дни (пн, вт, ср… вс).
- Используйте это значение индекса, чтобы узнать, какой сегодня день. В нашем случае это №2, и он представляет среду, поэтому в выводе он напечатает «Что такое среда».
Вот полный код для получения текущей даты и времени, используя 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) Сначала мы увидим простой шаг, как отформатировать год. Лучше разобраться с примером.
- Мы использовали » функцию strftime» для форматирования.
- Эта функция использует другой управляющий код для вывода.
- Каждый контрольный код напоминает различные параметры, такие как год, месяц, день недели и дата [(% y /% Y — год), (% a /% A — день недели), (% b /% B — месяц), (% d — день месяца)].
- В нашем случае это («% Y»), который напоминает год, он печатает полный год с веком (например, 2018).
Шаг 2) Теперь, если вы замените («% Y») строчными буквами, т. Е. («% Y) и выполните код, выходные данные будут отображать только (18), а не (2018). Век года не будет отображаться как показано на скриншоте ниже
Шаг 3) Функция Strf может объявлять дату, день, месяц и год отдельно. Также с небольшими изменениями в контрольном коде в функции strftime вы можете отформатировать стиль текста.
Внутри функции strftime, если вы замените (% a) на заглавную A, т. Е. (% A), результат будет распечатан как «Фирдей», а не просто как «Пт».
Шаг 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»)]
Вот полный код для преобразования даты и времени в объект 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, вам нужно сначала объявить оператор импорта, а затем выполнить код
- Написать заявление на импорт для timedelta
- Теперь напишите код для распечатки объекта из дельты времени, как показано на снимке экрана
- Запустите код. Timedelta представляет промежуток 365 дней, 8 часов и 15 минут и печатает то же самое
Смешение? Следующий шаг поможет
Шаг 2) Получим сегодняшнюю дату и время, чтобы проверить, хорошо ли работает наш оператор импорта. Когда код выполняется, он печатает сегодняшнюю дату, что означает, что наш оператор импорта работает хорошо
Шаг 3) Посмотрим, как мы можем получить дату через год через дельта-объекты. Когда мы запускаем код, он выдает результат, как и ожидалось.
Шаг 4) Еще один пример того, как дельта времени может использоваться для расчета будущей даты из текущей даты и времени
Шаг 5) Давайте рассмотрим более сложный пример. Я хотел бы определить, сколько дней прошло в новом году. Вот как мы будем действовать
- Используя today = date.today () мы получим сегодняшнюю дату
- Мы знаем, что новый год всегда 1 января, но год может быть другим. Используя nyd = date (today.year, 1,1) мы сохраняем новый год в переменной nyd
- if nyd <today: сравнивает, больше ли текущая дата, чем новый год. Если да, он входит в цикл while
- ((today-nyd) .days) показывает разницу между текущей датой и новым годом в ДНЯХ
Выходные данные показывают, что «Новый год уже прошел 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 вы можете оценить время как для будущего, так и для прошлого
- Рассчитать общее количество дней, оставшихся до особого дня (дня рождения) от текущего времени
- Рассчитать общее количество дней, прошедших за особый день (день рождения) с текущего времени