#python #python-3.x #datetime #python-datetime #python-dateutil
#python #python-3.x #дата и время #python-datetime #python-dateutil
Вопрос:
Как мы можем сравнить 2 даты, если они имеют одинаковую дату независимо от метки времени?
Например:
date1 = 1508651293229
date2 = 1508651293220
date1 = datetime.fromtimestamp(int(date1) / 1e3)
date2 = datetime.fromtimestamp(int(date2) / 1e3)
if(date1 == date2):
print(True)
но это проверяет всю дневную метку, включая время, и я хочу проверить только день, месяц и год.
Я попытался найти некоторую документацию, но не смог найти ничего подходящего.
Ответ №1:
datetime.datetime
экземпляры имеют date
метод, который возвращает datetime.date
объект, игнорируя время исходного значения.
if date1.date() == date2.date():
Вы также можете создавать datetime.date
экземпляры напрямую, если вас не волнует время, datetime.date.fromtimestamp
которое также существует.
date1 = datetime.date.fromtimestamp(date1 // 1000)
Комментарии:
1. Это работает, но проверяет дату, а также время, но мне нужна только часть дня, месяца и года
2. Затем вы неверно указали свое намерение в вопросе: «Я хочу проверить только день, месяц и год «.
3. Мой плохой, исправлен. Есть идеи, как избежать временной доли от этого
4. Это так.
date
Объект, возвращаемыйdate
методом, не включает время.datetime.datetime.fromtimestamp(date1//1000).date()
иdatetime.date.fromtimestamp(date1//1000)
оба возвращаютdatetime.date(2017, 10, 22)
5. Если вы действительно заботитесь только о дне, у каждого
datetime.date
экземпляра естьday
атрибут, например,datetime.date.fromtimestamp(date1//1000).day == 22
Ответ №2:
Попробуйте:
if date1.date() == date2.date():
print('True')
# and indeed, they are:
True
Комментарии:
1. Это работает, но проверяет дату и время, но мне нужна только дневная часть
2. нет, он не проверяет время.
.date()
возвращает только часть даты (год, месяц, день)datetime
.
Ответ №3:
datetime.date()
возвращает объект date с тем же годом, месяцем и днем
В вашем случае вы должны использовать:
if(date1.date() == date2.date()):
print(True)
Вы также можете сократить это, просто выполнив
print(date1.date() == date2.date())
Комментарии:
1. Это работает, но проверяет дату и время, но мне нужна только дневная часть.
2. Можете ли вы уточнить, что вы подразумеваете под «дневной частью?»
date1.date()
иdate2.date()
оба равны2017-10-22
. Если вам нужен только день месяца (игнорируя месяц и год), вы можете использоватьdate1.day
, который будет22
.3. Я рекомендую ознакомиться с документацией datetime . Это может решить вашу проблему.