Как сравнить время в python?
Привет qna!У меня есть бот с виртуальной экономикой. Там есть команда !work. Я записываю время в файл. Потом мне нужно сравнить время. К на разницу в 10 минут и больше.
- Вопрос задан более двух лет назад
- 1175 просмотров
Комментировать
Решения вопроса 1
Зависит от того, в каком формате записываете?
Если под записанным временнем имеется ввиду time.time()
То условие для проверки можно сделать так:
#Допустим K это время что сохраненно в файле if (time.time()-K) > 60 * 10:
Сравнение даты и времени в Python — с часовыми поясами и без них
Часто при работе с датами вам нужно знать, наступает ли данная дата до или после другой даты. Мы можем получить эти ответы, сравнив даты.
В этой статье мы узнаем, как использовать Python модуль datetime для создания и сравнения как простых (без информации о часовом поясе), так и расширенных (с информацией о часовом поясе) дат.
Для сравнения даты, мы будем использовать операторы сравнения в Python: < , >, == , = , !=.
Примечание. В модуле datetime есть два метода создания объекта дат — datetime.datetime и datetime.date . Сравнение можно проводить только с объектами, созданными из одного и того же класса:
datetime.datetime.now() >= datetime.date.today()
Это приведет к TypeError :
TypeError: can't compare datetime.datetime to datetime.date
Сравнение простых дат и времени по часовому поясу
Давайте начнем со сравнения простых дат, которые не имеют информации о часовом поясе. Во-первых, мы хотим импортировать модуль datetime :
from datetime import datetime, date
Затем давайте сделаем несколько дат, которые мы сможем сравнить:
date1 = date(1995, 3, 20) date2 = date(2020, 1, 1) dob_a = datetime(1995, 3, 20) dob_b = datetime(2020, 1, 1)
Сравнивать эти объекты так же легко, как сравнивать, скажем, целые числа. Одна дата меньше другой, если ее время предшествует другой.
print("date1 comes before date2?", date1 < date2) print("date1 comes after date2?", date1 >date2) print("date1 is equal to date2?", date1 == date2)
date1 comes before date2? True date1 comes after date2? False date1 is equal to date2? False
Теперь вы обычно включаете эту логику в некоторые операторы управления потоком:
if dob_a > dob_b: print("person a is older than person b") else: print("person b is older than person a")
person b is older than person a
Сравнение дат и времени с учетом часового пояса
Часовые пояса могут немного усложнить ситуацию, хотя, к счастью, мы можем применить ту же логику к сравнению. Единственная разница в том, что мы работаем с известными датами — датами с дополнительной информацией о часовом поясе, в котором они находятся:
from datetime import datetime import pytz # Create timezone objects for different parts of the world tz_ny= pytz.timezone('America/New_York') tz_lon = pytz.timezone("Europe/London") # Year, Month, Day, Hour, Minute, Second datetime = datetime(2010, 4, 20, 23, 30, 0) # Localize the given date, according to the timezone objects date_with_timezone_1 = tz_ny.localize(datetime) date_with_timezone_2 = tz_lon.localize(datetime) # These are now, effectively no longer the same *date* after being localized print(date_with_timezone_1) # 2010-04-20 23:30:00-04:00 print(date_with_timezone_2) # 2010-04-20 23:30:00+01:00 print(date_with_timezone_1 == date_with_timezone_2)
Выполнение этого кода приводит к:
False
В то время как это утверждение:
print(date_with_timezone_1 > date_with_timezone_2)
True
Этот результат может показаться вам немного странным. Мы сравниваем эти две даты:
2010-04-20 23:30:00-04:00 # date_with_timezone_1 2010-04-20 23:30:00+01:00 # date_with_timezone_2
Интуитивно кажется, что date_with_timezone_2 действительно больше, чем date_with_timezone_1 . Но давайте посмотрим, как работает функция localize() .
Здесь мы использовали библиотеку pytz , чтобы сделать наши наивные свидания более понятными. Мы создали объект часового пояса для Нью-Йорка ( tz_ny ) и объект часового пояса для Лондона ( tz_lon ).
Затем, чтобы ввести информацию о часовом поясе в наш объект datetime , мы запустили функцию localize() и упаковали результат в date_with_timezone_1 и date_with_timezone_2 .
Мы ввели 11: 30 вечера в localize() , который, в свою очередь, создал datetime для 11:30 вечера в Нью-Йорке и 11:30 вечера в Лондоне соответственно. Чтобы добраться с 11: 30 вечера в Нью-Йорке до 11: 30 вечера в Лондоне, вам придется добавить 4 часа. Прошло больше времени, чтобы добраться до Нью-Йорка к 11: 30 вечера, чем потребовалось, чтобы добраться до Лондона к 11:30 вечера. Таким образом, дата-время, соответствующее Нью-Йорку в 11:30 вечера, больше, чем дата-время, соответствующее Лондону в 11:30 вечера.
Помните об этом поведении при такой работе с часовыми поясами.
Однако стоит отметить, что сравнение дат c часовым поясом и без приведет к ошибке:
date_with_timezone = tz_ny.localize(datetime) print(datetime == date_without_timezone)
Это приведет к следующей ошибке:
TypeError: can't compare offset-naive and offset-aware datetimes
Итак, чтобы сравнивать объекты datetime , оба объекта должны быть либо с часовым поясом, либо без.
Сравните две даты в Python
В этом посте мы обсудим, как сравнить две даты в Python.
1. Использование datetime сравнение
Простое решение — использовать < или же >операторы на заданных объектах даты и времени, чтобы определить, какой из них более ранний. Следующий пример демонстрирует это:
from datetime import datetime
if __name__ == ‘__main__’ :
first = datetime ( 2020 , 1 , 1 )
second = datetime . now ( )
if first < second :
print ( 'First date is less than the second date.' )
elif first > second :
print ( ‘First date is more than the second date.’ )
print ( ‘Both dates are the same.’ )
Вы также можете найти разницу между двумя объектами datetime, чтобы получить объект timedelta и выполнить сравнение на основе положительного или отрицательного значения, возвращаемого timedelta.total_seconds() функция.
from datetime import datetime
if __name__ == ‘__main__’ :
first = datetime ( 2020 , 1 , 1 )
second = datetime . now ( )
seconds = ( first — second ) . total_seconds ( )
if seconds < 0 :
print ( 'First date is less than the second date.' )
elif seconds > 0 :
print ( ‘First date is more than the second date.’ )
print ( ‘Both dates are the same.’ )
2. Использование time.struct_time сравнение
Если даты указаны в строковом формате, вы можете легко преобразовать их в формат даты Python. Затем используйте < или же >операторы для выполнения сравнения:
import time
if __name__ == ‘__main__’ :
x = «01/01/2020»
y = «01/31/2020»
first = time . strptime ( x , «%m/%d/%Y» )
second = time . strptime ( y , «%m/%d/%Y» )
if first < second :
print ( 'First date is less than the second date.' )
elif first > second :
print ( ‘First date is more than the second date.’ )
print ( ‘Both dates are the same.’ )
Это все о сравнении двух дат в Python.
Оценить этот пост
Средний рейтинг 4.96 /5. Подсчет голосов: 25
Голосов пока нет! Будьте первым, кто оценит этот пост.
Сожалеем, что этот пост не оказался для вас полезным!
Расскажите, как мы можем улучшить этот пост?
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂
Подписывайся
1 Комментарий
Большинство голосов
Новейшие Самый старый
Встроенные отзывы
Просмотреть все комментарии
Просмотр комментариев
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации
- Все проблемы
- Практика DSA
- 100 самых популярных задач
- 50 лучших классических задач
- Лучшие алгоритмы
- Компилятор С/С++
- Компилятор Java
- Компилятор Python
- Компилятор JavaScript
- компилятор PHP
- Компилятор C#
- Свяжитесь с нами
- Политика конфиденциальности
- условия обслуживания
- Подпишитесь на новые публикации
Techie Delight © 2023 Все права защищены.
Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно
Дата и время в Python – подробно о модуле datetime
Python предоставляет модуль datetime для работы с реальными датами и временем. Приложения функционируют в режиме настоящего времени, и Python позволяет нам запланировать запуск нашего скрипта Python в определенное время. В Python дата не является типом данных, но мы можем работать с объектами даты, импортировав модуль с именем datetime, time и calendar.
В этом разделе руководства мы обсудим, как работать с объектами даты и времени в Python.
Классы datetime подразделяются на шесть основных:
- date – имеет формат стандартной даты. Состоит из года, месяца и дня как атрибутов.
- time – это точное время, предполагающее, что в каждом дне ровно 24 * 60 * 60 секунд. В качестве атрибутов у него есть часы, минуты, секунды, микросекунды и tzinfo.
- datetime – это группировка даты и времени вместе с атрибутами год, месяц, день, час, минута, секунда, микросекунда и tzinfo.
- timedelta – представляет разницу между двумя датами, временем или экземплярами datetime с точностью до микросекунд.
- tzinfo – предоставляет объекты информации о часовых поясах.
- timezone – включен в новую версию Python. Это класс, который реализует абстрактный базовый класс tzinfo.
Tick
В Python время отсчитывается с 12 часов утра 1 января 1970 года. Функция time() модуля time возвращает общее количество тиков, потраченных с 12:00 1 января 1970 года. Tick можно рассматривать как наименьшую единицу измерения времени.
Рассмотрим следующий пример.
import time; #prints the number of ticks spent since 12 AM, 1st January 1970 print(time.time())
1585928913.6519969
Как узнать текущее время?
Функции localtime() модуля времени используются для получения текущего кортежа времени. Рассмотрим следующий пример.
import time; #returns a time tuple print(time.localtime(time.time()))
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=3, tm_hour=21, tm_min=21, tm_sec=40, tm_wday=4, tm_yday=94, tm_isdst=0)
Кортеж времени
Время рассматривается как набор из 9 чисел. Давайте посмотрим на элементы временного кортежа.
| Показатель | Атрибут | Значение |
|---|---|---|
| 0 | Год | 4 цифры(например, 2018) |
| 1 | Месяц | От 1 до 12 |
| 2 | День | От 1 до 31 |
| 3 | Час | От 0 до 23 |
| 4 | Минуты | От 0 до 59 |
| 5 | Секунды | От 0 до 60 |
| 6 | День недели | От 0 до 6 |
| 7 | День года | От 0 до 366 |
| 8 | Перевод часов | -1, 0, 1 или -1 |
Форматирование времени
Время можно отформатировать с помощью функции asctime() модуля времени. Он возвращает отформатированное время для переданного кортежа времени.
import time #returns the formatted time print(time.asctime(time.localtime(time.time())))
Tue Dec 18 15:31:39 2018
Время сна Python
Метод sleep() модуля time используется для остановки выполнения скрипта на заданный промежуток времени. Вывод будет задержан на количество секунд, указанное в качестве числа с плавающей запятой.
Рассмотрим следующий пример:
import time for i in range(0,5): print(i) #Each element will be printed after 1 second time.sleep(1)
0 1 2 3 4
Модуль datetime
Модуль datetime позволяет нам создавать настраиваемые объекты даты, выполнять различные операции с датами, такие как сравнение и т. д.
Чтобы работать с датами как с объектами даты, мы должны импортировать модуль datetime в исходный код Python.
Рассмотрим следующий пример, чтобы получить представление об объекте datetime для текущего времени.
import datetime #returns the current datetime object print(datetime.datetime.now())
2020-04-04 13:18:35.252578
Создание объектов даты
Мы можем создавать объекты даты, минуя желаемую дату в конструкторе datetime, для которой должны быть созданы объекты даты.
import datetime #returns the datetime object for the specified date print(datetime.datetime(2020,04,04))
2020-04-04 00:00:00
Мы также можем указать время вместе с датой для создания объекта datetime. Рассмотрим следующий пример.
import datetime #returns the datetime object for the specified time print(datetime.datetime(2020,4,4,1,26,40))
2020-04-04 01:26:40
В приведенном выше коде мы последовательно передали в функцию datetime() атрибуты года, месяца, дня, часа, минуты и миллисекунды.
Сравнение двух дат
Мы можем сравнить две даты, используя такие операторы сравнения, как>,> =,
from datetime import datetime as dt #Compares the time. If the time is in between 8AM and 4PM, then it prints working hours otherwise it prints fun hours if dt(dt.now().year,dt.now().month,dt.now().day,8)fun hoursМодуль календаря
Python предоставляет объект календаря, который содержит различные методы для работы с календарями.
Рассмотрим следующий пример, чтобы распечатать календарь на последний месяц 2018 года.
import calendar; cal = calendar.month(2020,3) #printing the calendar of December 2018 print(cal)March 2020 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31Печать календаря на весь год в Python
Метод prcal() календарного модуля используется для печати календаря на весь год. Год, для которого должен быть напечатан календарь, должен быть передан в этот метод.
import calendar #printing the calendar of the year 2019 s = calendar.prcal(2020)
