1.1 --- a/imiptools/dates.py Tue Feb 03 00:02:18 2015 +0100
1.2 +++ b/imiptools/dates.py Tue Feb 03 00:33:45 2015 +0100
1.3 @@ -70,6 +70,13 @@
1.4 else:
1.5 return dt.strftime("%Y%m%d")
1.6
1.7 +def get_datetime_item(dt):
1.8 + if not dt:
1.9 + return None, None
1.10 + value = format_datetime(dt)
1.11 + attr = isinstance(dt, datetime) and {"TZID" : dt.tzname(), "VALUE" : "DATE-TIME"} or {"VALUE" : "DATE"}
1.12 + return value, attr
1.13 +
1.14 def get_datetime(value, attr=None):
1.15
1.16 """
1.17 @@ -94,7 +101,9 @@
1.18
1.19 return to_timezone(dt, m.group("utc") and "UTC" or attr and attr.get("TZID") or None)
1.20
1.21 - if not attr or attr.get("VALUE") == "DATE":
1.22 + # Permit dates even if the VALUE is not set to DATE.
1.23 +
1.24 + if not attr or attr.get("VALUE") in (None, "DATE"):
1.25 m = match_date_icalendar(value)
1.26 if m:
1.27 year, month, day = map(m.group, ["year", "month", "day"])
1.28 @@ -108,6 +117,12 @@
1.29 def get_end_of_day(dt, tzid=None):
1.30 return get_start_of_day(dt + timedelta(1), tzid)
1.31
1.32 +def get_start_of_next_day(dt, tzid=None):
1.33 + if isinstance(dt, datetime):
1.34 + return get_end_of_day(dt, tzid)
1.35 + else:
1.36 + return dt + timedelta(1)
1.37 +
1.38 def ends_on_same_day(dt, end):
1.39 return (
1.40 dt.date() == end.date() or