weekdays in range

J

Jive Dadson

(Sorry if this shows up twice.)

Can someone think of an easy way to calculate the number of weekdays
between two calendar dates (in Python)?

Thankee.
 
J

Jive Dadson

Ben said:
Jive Dadson said:
Can someone think of an easy way to calculate the number of weekdays
between two calendar dates (in Python)?

That depends on what you mean by “weekdaysâ€.
October 2009
Mo Tu We Th Fr Sa Su
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31datetime.timedelta(13)

If you're expecting to exclude Saturday and Sunday (i.e. if you expect
the above result to be 9 days instead of 13), you can use other
functions of the ‘calendar’ module; try starting with:
friday_weekday = 4
len([
... date for date in (
... begin_date + datetime.timedelta(days)
... for days in range((end_date - begin_date).days))
... if calendar.weekday(date.year, date.month, date.day) <= friday_weekday])
9

Thanks for your help. For a non-expert at Python, that last compound
statement is pretty inscrutable. I am trying to scrute it. Wish me luck.
 
D

Dave Angel

Jive said:
<div class="moz-text-flowed" style="font-family: -moz-fixed">Wow.
It's a danged tutorial. Thanks again. Take a break.

</div>
Ben Finney's method is a very good approach, and an experienced Python
programmer would consider it straightforward.

But I have to ask whether the range of dates you might be considering
could be large. For example, if you want to know how many week-days
there are between a date in 1904 and 2207, it'd build a list of some 110
thousand items. There are other approaches which would be faster,
consume much less memory, and be much harder to read.


I'm not offering to debug it, but here's such an approach, subject to
the old plus/minus one bugs.

def epochweekdays (datetimeobj)
"""Given an arbitrary Monday long ago, figure out how many
weekdays have occurred between that day and the argument"""
subtract to get total_days
return int(totaldays/7) * 5 + max(totaldays%7, 5)

Now, your answer is just
epochweekdays(b) - epochweekdays(a)

DaveA
 
J

Jive Dadson

I'm using weekdays as a proxy for days when the US stock market is open.
(I'll miss holidays.) The application is pricing CALL and PUT
options. Speed is not a problem. The number of days will typically be
between 1 and 254.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,051
Latest member
CarleyMcCr

Latest Threads

Top