Как получить epoch time на момент месяц, год назад?
Получаем текущую отметку epoch time (количество прошедших секунд) сейчас
import time
epoch_time = int(time.time())
Как получить производные от текущей отметки:
- месяц назад
- три месяца назад
- год назад
- два года назад?
Просто отнимать количество секунд в месяце, году - видится плохим вариантом, т.к. в месяцах разное количество дней...
Ответы (1 шт):
Для начала, вам надо преобразовать timestamp в дату с помощью функции fromtimestamp библиотеки datetime, а затем вычесть из даты нужное кол-во дней / месяцев / лет с помощью dateutil.relativedelta.relativedelta
import datetime
import dateutil.relativedelta
import time
epoch_time = int(time.time())
current_date = datetime.datetime.fromtimestamp(epoch_time)
month_ago = current_date - dateutil.relativedelta.relativedelta(months=1)
three_month_ago = current_date - dateutil.relativedelta.relativedelta(months=3)
year_ago = current_date = current_date - \
dateutil.relativedelta.relativedelta(years=1)
two_years_ago = current_date = current_date - \
dateutil.relativedelta.relativedelta(years=2)
print(current_date)
print(month_ago)
print(three_month_ago)
print(year_ago)
print(two_years_ago)
# 2020-04-19 09:41:28
# 2023-03-19 09:41:28
# 2023-01-19 09:41:28
# 2022-04-19 09:41:28
# 2020-04-19 09:41:28
P.S.: Поскольку вы не указали определение "месяц назад", я посчитал, что это значит "день в предыдущем месяце не больший дня в текущем". Так, например, если бы вы вызвали этот код 31.03.2023, то дата месяц назад была бы 28.02.2023. Если вам хочется вычесть количество дней, вы можете использовать days=31, а не months=1. Если вы хотите получить количество день в текущем месяце, вы можете использовать модуль calendar:
import calendar
days_in_month = calendar.monthrange(current_year, current_month)[1]
UPD: Чтобы получить именно timestamp, вы можете использовать метод .timestamp(). Пример:
current_date = datetime.datetime.fromtimestamp(epoch_time)
print(int(current_date.timestamp()))