Как получить все даты недели на основе номера недели в Python - PullRequest
0 голосов
/ 16 мая 2019

Я хочу, чтобы все даты текущей недели основывались на номере недели.

Я могу получить номер недели, как

import datetime
weeknum=datetime.datetime.now().isocalendar()[1]

результат равен 20.

хотел все даты недели 20. конечный результат должен быть

dates=['2019-05-12','2019-05-13','2019-05-14','2019-05-15','2019-05-16','2019-05-17','2019-05-18']

пожалуйста, помогите мне.

Ответы [ 5 ]

1 голос
/ 16 мая 2019
import datetime

# Starts with knowing the day of the week
week_day=datetime.datetime.now().isocalendar()[2]

# Calculates Starting date (Sunday) for this case by subtracting current date with time delta of the day of the week
start_date=datetime.datetime.now() - datetime.timedelta(days=week_day)

# Prints the list of dates in a current week
dates=[str((start_date + datetime.timedelta(days=i)).date()) for i in range(7)]
dates

Вывод:

>>> dates
['2019-05-12', '2019-05-13', '2019-05-14', '2019-05-15', '2019-05-16', '2019-05-17', '2019-05-18']

Надеюсь, это поможет вам.Хорошего дня.: D

1 голос
/ 16 мая 2019

Вы можете сделать это с помощью time и datetime, а также , этот ответ предлагает, но измените его в соответствии с вашими требованиями:

WEEK  = 20 - 2 # as it starts with 0 and you want week to start from sunday
startdate = time.asctime(time.strptime('2019 %d 0' % WEEK, '%Y %W %w')) 
startdate = datetime.datetime.strptime(startdate, '%a %b %d %H:%M:%S %Y') 
dates = [startdate.strftime('%Y-%m-%d')] 
for i in range(1, 7): 
    day = startdate + datetime.timedelta(days=i)
    dates.append(day.strftime('%Y-%m-%d')) 

Вывод следующим образом:

dates = ['2019-05-12',
         '2019-05-13',
         '2019-05-14',
         '2019-05-15',
         '2019-05-16',
         '2019-05-17',
         '2019-05-18']
1 голос
/ 16 мая 2019

Используйте timedelta и понимание списка.

import datetime
theday = datetime.date.today()
weekday = theday.isoweekday()
# The start of the week
start = theday - datetime.timedelta(days=weekday)
# build a simple range
dates = [start + datetime.timedelta(days=d) for d in range(7)]

Для получения вывода в строках

dates = [str(d) for d in dates]
0 голосов
/ 16 мая 2019

Что вы можете сделать, это -

weekdates = []
week_number = datetime.datetime.now().isocalendar()[1]
for day in range(7):
    week_date = datetime.datetime.strptime("2019-W{}".format(week_number)+ '-{}'.format(day), "%Y-W%W-%w")
    weekdates.append(week_date)

Что это делает, это использует преобразование формата даты, чтобы построить дату в соответствии с днем ​​недели.

Надеюсь, что этопомогает.

0 голосов
/ 16 мая 2019

Я бы взглянул на оба вопроса ниже.Первый должен помочь вам рассчитать дату начала по номеру недели - не забудьте указать свой год.

Получить дату по номеру недели

Я бы тогдаиспользуйте ответ ниже и вместо даты начала / окончания используйте дату начала сверху и добавьте 1 день;6 раз и сохраняйте каждую новую дату в массиве.

Python: укажите данные начала и конца недели для указанной даты

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