[python-uk] Last Thursday's meet - roll call.

Simon Brunning python-uk@python.org
Tue, 20 Aug 2002 12:03:39 +0100


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01C24839.3D44F3E0
Content-Type: text/plain

Bah! That'll teach me to post code in progress. Somewhat cleaned up version
attached.

Cheers,
Simon Brunning
TriSystems Ltd.
sbrunning@trisystems.co.uk
>  <<boozeup.py>> 
> 
> 
> 
> 
-----------------------------------------------------------------------
The information in this email is confidential and may be legally privileged.
It is intended solely for the addressee. Access to this email by anyone else
is unauthorised. If you are not the intended recipient, any disclosure,
copying, distribution, or any action taken or omitted to be taken in
reliance on it, is prohibited and may be unlawful. TriSystems Ltd. cannot
accept liability for statements made which are clearly the senders own.

------_=_NextPart_000_01C24839.3D44F3E0
Content-Type: application/octet-stream;
	name="boozeup.py"
Content-Disposition: attachment;
	filename="boozeup.py"

import mx.DateTime

def getNextBoozeupDate(relativeDate=None):
    """Return the date of the next Python South-East UK booze up as an
    mx.DateTime.DateTime object.

    Optional parameter relativeDate defaults to current date."""
    
    relativeDate = relativeDate or mx.DateTime.today()
    
    thisMonthsBoozeupDate = getMonthsBoozeupDate()
    if thisMonthsBoozeupDate >= relativeDate:
        return thisMonthsBoozeupDate
    
    nextMonthsBoozeupDate = getMonthsBoozeupDate(month=relativeDate.month+1)
    return nextMonthsBoozeupDate

def getMonthsBoozeupDate(year=0, month=0):
    """Return the date of the Python South-East UK booze up in a given month
    as an mx.DateTime.DateTime object.

    The booze up will be on the 2nd Thursday of the month, unless the 1st
    Thursday is the 1st day of the month, in which case the booze up will be
    on the 1st.

    Optional parameters year and month default to the current date."""
    
    today = mx.DateTime.today()
    year = year or today.year
    month = month or today.month

    boozeupDate = mx.DateTime.DateTimeFrom(year=year, month=month) \
                + mx.DateTime.RelativeDateTime(weekday=(mx.DateTime.Thursday, 2))
    
    if boozeupDate.day == 8:
        boozeupDate = boozeupDate - 7

    return boozeupDate        
        
if __name__ == '__main__':
    print getNextBoozeupDate()
------_=_NextPart_000_01C24839.3D44F3E0--