-# Copyright (c) 2001 Autonomous Zone Industries
-# Copyright (c) 2002-2007 Bryce "Zooko" Wilcox-O'Hearn
-# This file is licensed under the
-# GNU Lesser General Public License v2.1.
-# See the file COPYING or visit http://www.gnu.org/ for details.
-
# ISO-8601:
# http://www.cl.cam.ac.uk/~mgk25/iso-time.html
-import datetime, os, re, time
+import calendar, datetime, re, time
+
+def format_time(t):
+ return time.strftime("%Y-%m-%d %H:%M:%S", t)
def iso_utc_date(now=None, t=time.time):
if now is None:
now = t()
return datetime.datetime.utcfromtimestamp(now).isoformat(sep)
-def iso_local(now=None, sep='_', t=time.time):
- if now is None:
- now = t()
- return datetime.datetime.fromtimestamp(now).isoformat(sep)
-
def iso_utc_time_to_seconds(isotime, _conversion_re=re.compile(r"(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})[T_ ](?P<hour>\d{2}):(?P<minute>\d{2}):(?P<second>\d{2})(?P<subsecond>\.\d+)?")):
"""
The inverse of iso_utc().
else:
subsecfloat = 0
- origtz = os.environ.get('TZ')
- os.environ['TZ'] = "UTC"
- time.tzset()
- try:
- return time.mktime( (year, month, day, hour, minute, second, 0, 1, 0) ) + subsecfloat
- finally:
- if origtz is None:
- del os.environ['TZ']
- else:
- os.environ['TZ'] = origtz
- time.tzset()
+ return calendar.timegm( (year, month, day, hour, minute, second, 0, 1, 0) ) + subsecfloat
def parse_duration(s):
orig = s
# day
return int(iso_utc_time_to_seconds(s + "T00:00:00"))
+def format_delta(time_1, time_2):
+ if time_1 is None:
+ return "N/A"
+ if time_1 > time_2:
+ return '-'
+ delta = int(time_2 - time_1)
+ seconds = delta % 60
+ delta -= seconds
+ minutes = (delta / 60) % 60
+ delta -= minutes * 60
+ hours = delta / (60*60) % 24
+ delta -= hours * 24
+ days = delta / (24*60*60)
+ if not days:
+ if not hours:
+ if not minutes:
+ return "%ss" % (seconds)
+ else:
+ return "%sm %ss" % (minutes, seconds)
+ else:
+ return "%sh %sm %ss" % (hours, minutes, seconds)
+ else:
+ return "%sd %sh %sm %ss" % (days, hours, minutes, seconds)
+