Python получить вчерашнюю дату

Как получить вчерашнюю дату в Python?

@ loyal  Вы можете использовать timedelta() функцию в Python, чтобы получить вчерашнюю дату, посмотрите пример кода ниже:

from datetime import date from datetime import timedelta yesterday = date.today() - timedelta(days=1) # Вывод: 2022-02-17 print(yesterday)

Вы можете получить вчерашнюю дату в Python, используя модуль datetime . Вот пример кода:

from datetime import date, timedelta # получаем сегодняшнюю дату today = date.today() # вычитаем из сегодняшней даты один день yesterday = today - timedelta(days=1) print("Вчерашняя дата была:", yesterday)

Этот код создаст объект date для сегодняшней даты, а затем вычтет из него один день, чтобы получить вчерашнюю дату. Вывод будет иметь формат «YYYY-MM-DD».

Источник

Получить дату несколько дней или месяцев назад

Этот класс представляет собой заданный промежуток времени. И используется, в большинстве своем, для получения какой то прошедшей либо грядущей даты либо времени посредством вычитания или сложения двух дат. Например, если Вам нужно получить дату через час, дату вчерашнего дня, дату месяц назад и т.д.

datetime.timedelta( 
days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0 )

Все аргументы являются необязательными и по умолчанию равны 0. Аргументы могут быть целыми или дробными , а может быть положительными либо отрицательными .

Примеры использования

Получаем дату вчерашнего дня:

from datetime import date, timedelta 

print(date.today())
print(date.today() - timedelta(days=1))

2015-12-14
2015-12-13

Получаем дату месяц назад:

from datetime import date, timedelta 

print(date.today())
print(date.today() - timedelta(days=31))

2015-12-14
2015-11-13

Получаем время через 2 часа назад:

from datetime import timedelta, datetime

print(datetime.now())
print(datetime.now() + timedelta(hours=2))

2015-12-14 13:59:00.724516
2015-12-14 15:59:00.724611

Получаем дату без трех часов как неделю назад:

from datetime import timedelta, datetime

print(datetime.now())
print(datetime.now() - timedelta(days=7, hours=3))

2015-12-14 14:05:31.426143
2015-12-07 11:05:31.426229

Источник

How to find the date n days ago in Python?

I would like to write a script where I give Python a number of days (let’s call it d ) and it gives me the date we were d days ago. I am struggling with the module datetime:

import datetime tod = datetime.datetime.now() d = timedelta(days = 50) a = tod - h Type Error : unsupported operand type for - : "datetime.timedelta" and "datetime.datetime" 

5 Answers 5

You have mixed something up with your variables, you can subtract timedelta d from datetime.datetime.now() with no issue:

import datetime tod = datetime.datetime.now() d = datetime.timedelta(days = 50) a = tod - d print(a) 2014-12-13 22:45:01.743172 

you can also format the date with the method strftime(), e.g. get it in local date format, get just date (without time), etc.etc. At print write print(strftime( %x)) for local vesrion of date. All the legal formats here: w3schools.com/python/python_datetime.asp

from datetime import datetime, timedelta N_DAYS_AGO = 5 today = datetime.now() n_days_ago = today - timedelta(days=N_DAYS_AGO) print today, n_days_ago 

If your arguments are something like, yesterday,2 days ago, 3 months ago, 2 years ago. The function below could be of help in getting the exact date for the arguments. You first need to import the following date utils

import datetime from dateutil.relativedelta import relativedelta 

Then implement the function below

def get_past_date(str_days_ago): TODAY = datetime.date.today() splitted = str_days_ago.split() if len(splitted) == 1 and splitted[0].lower() == 'today': return str(TODAY.isoformat()) elif len(splitted) == 1 and splitted[0].lower() == 'yesterday': date = TODAY - relativedelta(days=1) return str(date.isoformat()) elif splitted[1].lower() in ['hour', 'hours', 'hr', 'hrs', 'h']: date = datetime.datetime.now() - relativedelta(hours=int(splitted[0])) return str(date.date().isoformat()) elif splitted[1].lower() in ['day', 'days', 'd']: date = TODAY - relativedelta(days=int(splitted[0])) return str(date.isoformat()) elif splitted[1].lower() in ['wk', 'wks', 'week', 'weeks', 'w']: date = TODAY - relativedelta(weeks=int(splitted[0])) return str(date.isoformat()) elif splitted[1].lower() in ['mon', 'mons', 'month', 'months', 'm']: date = TODAY - relativedelta(months=int(splitted[0])) return str(date.isoformat()) elif splitted[1].lower() in ['yrs', 'yr', 'years', 'year', 'y']: date = TODAY - relativedelta(years=int(splitted[0])) return str(date.isoformat()) else: return "Wrong Argument format" 

You can then call the function like this:

print get_past_date('5 hours ago') print get_past_date('yesterday') print get_past_date('3 days ago') print get_past_date('4 months ago') print get_past_date('2 years ago') print get_past_date('today') 

Источник

Читайте также:  Убрать синюю ссылку css
Оцените статью