Получить дату недели, месяца и дня в питоне - PullRequest
0 голосов
/ 15 марта 2019

У меня есть переменная даты:

temp_date = '2019-03-15'

Я вычислил week no. of the month и day, используя datetime:

Я получил week_no = 3 и день = 'пятница' .

Я хочу узнать, какая дата была в феврале, январе и декабре для одной и той же комбинации дня и недели.

т.е.за февраль, неделя 3, пятница (ответ: 2019-02-15) &

дата за январь, неделя 3, пятница (ответ: 2019-01-18).

дата за декабрь 3 недели, Пятница (Отр .: 2018-12-14)

Я пытался:

feb= (current_date + timedelta(weeks=4)).strftime ('%d-%m-%Y')
jan= (current_date + timedelta(weeks=8)).strftime ('%d-%m-%Y')
dec= (current_date + timedelta(weeks=12)).strftime ('%d-%m-%Y')

Я получил даты января и февраля правильно, но за декабрь я получил (2018-12-21).

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 15 марта 2019

Это заняло некоторое время, использование isoweek вместе с monthrange из calendar должно сделать это:

from isoweek import Week
import datetime
from calendar import monthrange

year = 2019
weekDay = 3
jan_date = Week(year, weekDay).friday()

Feb = monthrange(year, 2)[1]   # 28 Days for 2nd month
Mar = monthrange(year, 3)[1]   # 31 Days for 3rd month
Apr = monthrange(year, 4)[1]   # 30 Days for 4th month

feb_date = jan_date + datetime.timedelta(days=Feb)
mar_date = feb_date + datetime.timedelta(days=Mar)
apr_date = mar_date + datetime.timedelta(days=Apr)

print(feb_date)   # Feb 28 Days
print(mar_date)   # Mar 31 Days
print(apr_date)   # Apr 30 Days

OUTPUT

2019-02-15
2019-03-18
2019-04-17

Примечание: это делается итеративно, добавляя количество месяцев с предыдущие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...