On Sep 6, 10:57 am, Tim Golden <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] wrote: > > Hi, > > > I am working on a timesheet application in which I need to to find the > > first pay period in a month that is entirely contained in that month > > to calculate vacation time. Below are some example date ranges: > > > December 31, 2006 January 13, 2007 # doesn't earn > > January 14, 2007 January 27, 2007 # does earn > > January 28, 2007 February 10, 2007 # doesn't > > February 11, 2007 February 24, 2007 # does > > > So far, the best approach I've come up with is to create a list of > > tuples that contain the pay period date ranges for the year and > > iterate through the tuples looking for the first occurrence of the > > month names matching. Then I'd add that date range to a separate list > > and somehow ignore any other matches in that month. This seems like a > > hack. Does anyone have a better idea? > > Well, I can come up with a solution which basically reflects the > way I'd do it in SQL (since this kind of thing is my bread-and-butter > there) but I'm not convinced it's really any better than your proposal. > However, for the purposes of illustration: > > <code> > import calendar > import datetime > > YEAR = 2007 > > months = [ > (datetime.date (YEAR, n, 1), datetime.date (YEAR, n, calendar.monthrange > (YEAR, n)[1])) > for n in range (1, 13) > ] > > periods = [ > (datetime.date(2006, 12, 31), datetime.date(2007, 1, 13)), > (datetime.date(2007, 1, 14), datetime.date(2007, 1, 27)), > (datetime.date(2007, 1, 28), datetime.date(2007, 2, 10)), > (datetime.date(2007, 2, 11), datetime.date(2007, 2, 24)) > ] > > for m in months: > candidate_periods = [p for p in periods if m[0] <= p[0] and p[1] <= m[1]] > if candidate_periods: > print m[0], "=>", min (candidate_periods) > else: > print m[0], "=>", "no period matches" > > </code> > > TJG
Thanks! I'll try it both ways and see if there's any appreciable difference in speed, although since it will be packaged into an executable, that may not be an issue anyway. Mike -- http://mail.python.org/mailman/listinfo/python-list