Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to get all dates of week based on week number in python

I want all the dates of the present week based on weeknumber.

I can get week number like

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

result is 20.

wanted all dates of week 20. the final output should be

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

please help me.

like image 704
learningstudent Avatar asked May 16 '19 07:05

learningstudent


People also ask

How do I get the weekly date in Python?

Practical Data Science using Python YOu can use the isocalender function from the datetime module to get the current week. Create the object of the date first, then call isocalender() on this object. This returns a 3-tuple of Year, Week number and Day of Week.

How do YOu convert a week number to a date in sheets?

How to get the date from a week number. To get the date of the Monday in a week, use =DATE( A1 , 1, -3 + 7 * B1 - WEEKDAY(DATE( A1 , 1, 4), 2) + 1) . Cell A1 contains the four-digit year (e.g. 2022), and cell B2 contains the week number (1-53).

How do YOu get week number on pandas?

The isocalendar() function in Pandas returns the ISO year, week number, and weekday from a Timestamp object (an equivalent of Python's datetime object).


2 Answers

You can do it with time and datetime as well as this answer suggest but change it to your requirements:

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')) 

Output as following:

dates = ['2019-05-12',
         '2019-05-13',
         '2019-05-14',
         '2019-05-15',
         '2019-05-16',
         '2019-05-17',
         '2019-05-18']
like image 141
Sergey Pugach Avatar answered Sep 21 '22 15:09

Sergey Pugach


Use timedelta and a list comprehension.

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)]

To get output in strings

dates = [str(d) for d in dates]
like image 43
Will Avatar answered Sep 19 '22 15:09

Will