1.1 --- a/imiptools/dates.py Sun Feb 08 01:26:33 2015 +0100
1.2 +++ b/imiptools/dates.py Sun Feb 08 18:39:03 2015 +0100
1.3 @@ -20,6 +20,7 @@
1.4 """
1.5
1.6 from datetime import date, datetime, timedelta
1.7 +from os.path import exists
1.8 from pytz import timezone, UnknownTimeZoneError
1.9 import re
1.10
1.11 @@ -46,6 +47,21 @@
1.12 else:
1.13 return dt
1.14
1.15 +def get_default_timezone():
1.16 +
1.17 + "Return the system time regime."
1.18 +
1.19 + filename = "/etc/timezone"
1.20 +
1.21 + if exists(filename):
1.22 + f = open(filename)
1.23 + try:
1.24 + return f.read().strip()
1.25 + finally:
1.26 + f.close()
1.27 + else:
1.28 + return None
1.29 +
1.30 def to_timezone(dt, name):
1.31
1.32 """
1.33 @@ -219,4 +235,31 @@
1.34
1.35 return format_datetime(to_timezone(datetime.utcnow(), "UTC"))
1.36
1.37 +def get_freebusy_period(start, end, tzid):
1.38 +
1.39 + """
1.40 + For the given 'start' datetime, together with the given 'end' datetime, and
1.41 + given a 'tzid' either from the datetimes or provided for the user, return a
1.42 + (start, end) tuple containing datetimes in the UTC time zone, where dates
1.43 + are converted to points in time so that each day has a specific start and
1.44 + end point defined in UTC.
1.45 + """
1.46 +
1.47 + start = to_utc_datetime_only(start, tzid)
1.48 + end = to_utc_datetime_only(end, tzid)
1.49 + return start, end
1.50 +
1.51 +def to_utc_datetime_only(dt, tzid):
1.52 +
1.53 + """
1.54 + Return the datetime 'dt' as a point in time in the UTC time zone, given the
1.55 + 'tzid' defined for the datetime. Where 'dt' is a date, the start of the
1.56 + indicated day is returned, defined in UTC.
1.57 + """
1.58 +
1.59 + if not isinstance(dt, datetime):
1.60 + return to_timezone(get_start_of_day(dt, tzid), "UTC")
1.61 + else:
1.62 + return to_timezone(dt, "UTC")
1.63 +
1.64 # vim: tabstop=4 expandtab shiftwidth=4