title: nth weekday calculation in Python - whats wrong with this code?
body: <p>I'm trying to calculate the nth weekday for a given date. For example, I should be able to calculate the 3rd wednesday in the month for a given date.</p>
  
  <p>I have written 2 versions of a function that is supposed to do that:</p>
  
  <pre><code>from datetime import datetime, timedelta
  
  ### version 1
  def nth_weekday(the_date, nth_week, week_day):
      temp = the_date.replace(day=1)
      adj = (nth_week-1)*7 + temp.weekday()-week_day
      return temp + timedelta(days=adj)
  
  ### version 2
  def nth_weekday(the_date, nth_week, week_day):
      temp = the_date.replace(day=1)
      adj = temp.weekday()-week_day
      temp += timedelta(days=adj)
      temp += timedelta(weeks=nth_week)
      return temp
  </code></pre>
  
  <p><strong>Console output</strong></p>
  
  <pre><code># Calculate the 3rd Friday for the date 2011-08-09
  x=nth_weekday(datetime(year=2011,month=8,day=9),3,4)
  print 'output:',x.strftime('%d%b%y') 
  
  # output: 11Aug11 (Expected: '19Aug11')
  </code></pre>
  
  <p>The logic in both functions is obviously wrong, but I can't seem to locate the bug - can anyone spot what is wrong with the code - and how do I fix it to return the correct value?</p>