# \$Id: datetime.py,v 1.1 2011-09-01 15:34:03 wirawan Exp \$ # # wpylib.datetime # Created: 20110901 # Wirawan Purwanto # """ wpylib.datetime Frequently used date/time related tools. Do not confuse this with python's core datetime module, which is not being replaced by this module! """ import sys import time def date8(): """Returns a standard 8-digit representation of the current date.""" return time.strftime("%Y%m%d") def time_diff(time1, time2): """Returns the time difference (time1 - time2) in seconds.""" from time import mktime return mktime(time1) - mktime(time2) def shift_time(t, dt, localtime=True): """Shifts a time data by an amount in dt (specified in seconds).""" if isinstance(t, time.struct_time): t1 = time.mktime(t) + dt else: t1 = t + dt if localtime: return time.localtime(t1) else: return time.gmtime(t1) def utime_to_iso(t=None, local=True): """Converts UNIX time (seconds since Epoch) to ISO-formatted time string. In order to ease time computation/conversion, we will use numeric TZ shift (+/-HH:MM) instead of letter TZ code (EDT, EST, GMT, etc). """ from time import time, localtime, gmtime, strftime, timezone if t == None: t = time() if local: tt = localtime(t) dtz = -timezone + tt.tm_isdst * 3600 # hopefully dtz is divisible by 60 # It would be silly for a gov't to make its time # differ by seconds to GMT! dsec = abs(dtz) % 60 dmin = abs(dtz // 60) % 60 dhr = dtz // 3600 if dsec == 00: sdtz = " %+03d:%02d" % (dhr, dmin) else: sdtz = " %+03d:%02d:%02d" % (dhr, dmin, dsec) else: tt = gmtime(t) sdtz = " +00:00" # Numeric timezone offset is created by hand # because I don't want to use %Z, nor do I want to use # "%z" (which did not work in python) return strftime("%Y-%m-%d %H:%M:%S", tt) + sdtz