Try this. It works for me and my application.

=============Program================
from datetime import datetime, timedelta
import time

DST_dict = { # West coast, 8 hours from Greenwich for PST
         2007:("2007/03/11 02:00:00", "2007/11/04 02:00:00"),
         2008:("2008/03/09 02:00:00", "2008/11/02 02:00:00"),
         2009:("2009/03/08 02:00:00", "2009/11/01 02:00:00"),
         2010:("2010/03/14 02:00:00", "2010/11/07 02:00:00")}

def adjust_DST(DT_stamp, spring, fall):
    # yyyy/mm/dd hh:mm:ss in,
    print "Date: ", DT_stamp
    format = '%Y/%m/%d %H:%M:%S'
    dt = datetime(*(time.strptime(DT_stamp, format)[0:6])) # get six tuple
    dspring = datetime(*(time.strptime(spring, format)[0:6]))
    dfall   = datetime(*(time.strptime(fall, format)[0:6]))
    if ((dt >= dspring) and (dt <= dfall)):
        print "   adjustment"
        adj = timedelta(seconds = 3600)
        dt = dt + adj
    else:
        print "   no adjustment"
    format = '%Y/%m/%d %H:%M:%S'
    return dt.strftime(format)

print "DST Adjustment"
print "   " + adjust_DST("2007/03/28 12:45:10", \
        "2007/03/11 02:00:00", "2007/11/04 02:00:00" )
print "   " + adjust_DST("2009/11/26 20:35:15", \
        "2007/03/11 02:00:00", "2007/11/04 02:00:00" )

=======================Results==============
ST Adjustment
Date:  2007/03/28 12:45:10
   adjustment
   2007/03/28 13:45:10
Date:  2009/11/26 20:35:15
   no adjustment
   2009/11/26 20:35:15
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to