Changelog#

v2.0.1 (2023-11-20)#

  • Add support for Python 3.12

  • Replace usage of deprecated datetime.utcnow and datetime.utcfromtimestamp.

v2.0.0 (2021-06-26)#

  • Drop support for Python 3.4 and 3.5.

v1.3.1 (2021-06-26)#

  • Fix compatibility issue with Python 3.4 and 3.5 by replacing f-string usage with string-format.

v1.3.0 (2021-01-07)#

  • Add Python 3.9 support.

  • Fix bug in Zulu.time_from, Zulu.time_to, Zulu.time_from_now, and Zulu.time_to_now where keyword arguments weren’t passed to underlying Delta.format call.

  • Fix bug in Zulu.format where “YY” and “YYYY” format patterns would return the year in “Week of Year” based calendars instead of the regular calendar year.

v1.2.0 (2020-01-14)#

  • Add Python 3.8 support.

  • Add 'week' option to Zulu.start_of, Zulu.end_of, Zulu.span, and Zulu.span_range. Thanks ThomasChiroux!

  • Fix bug in Zulu.astimezone in Python 3.8 due to change in return type from super().asdatetime. In Python<=3.7, super().asdatetime returned as instance of datetime, but in Python 3.8 another instance of Zulu was returned instead. Zulu.astimezone will now return a datetime instance in Python 3.8.

v1.1.1 (2019-08-14)#

  • Remove unused parameter in zulu.Timer.__init__().

v1.1.0 (2018-11-01)#

  • Add fold attribute support to Zulu.

  • Add zulu.to_seconds for converting units of time to total number of seconds.

  • Add zulu.Timer class that can be used to track elapsed time (like a stopwatch) or as a countdown timer.

v1.0.0 (2018-08-20)#

  • Drop support for Python 2.7.

v0.12.1 (2018-07-16)#

  • Support Python 3.7.

v0.12.0 (2017-07-11)#

  • Add Zulu.datetimetuple().

  • Add Zulu.datetuple().

  • Remove Zulu.__iter__ method. (breaking change)

  • Remove Delta.__iter__ method. (breaking change)

v0.11.0 (2017-06-28)#

  • Add Python 3.6 support.

  • Add Delta.__iter__ method that yields 2-element tuples like Zulu.__iter__. Delta values are normalized into integer values distributed from the higher units to the lower units.

  • Add Delta.__float__ and Delta.__int__ methods for converting to seconds.

  • Add Zulu.__float__ and Zulu.__int__ methods for converting to epoch seconds.

  • Fix issue in Python 3.6 where zulu.now() returned a naive datetime Zulu instance.

  • Make Zulu.__iter__ yield 2-element tuples containing (unit, value) like (('year', 2000), ('month', 12), ...) so it can be converted to a dict with proper keys easier. (breaking change)

  • Remove previously deprecated zulu.delta() function. Use zulu.parse_delta() instead. (breaking change)

  • Rename modules: (breaking change)

    • zulu.datetime -> zulu.zulu

    • zulu.timedelta -> zulu.delta

v0.10.1 (2017-02-15)#

  • Provide fallback for the default value of locale in Delta.format() when a locale is not known via environment variables.

v0.10.0 (2017-02-13)#

  • Add zulu.parse_delta as alias for Delta.parse.

  • Deprecate zulu.delta in favor of zulu.parse_delta.

  • Allow first argument to Zulu(), Zulu.parse(), and zulu.parse() to be a dict containing keys corresponding to initialization parameters.

  • Fix error message for invalid timezone strings so that the supplied string is shown correctly.

v0.9.0 (2016-11-21)#

  • Require python-dateutil>=2.6.0. (breaking change)

  • Replace usage of pytz timezone handling for strings with dateutil.tz.gettz. Continue to support pytz timezones during Zulu() object creation. (breaking change).

  • Replace default UTC timezone with dateutil.tz.tzutc(). Was previously pytz.UTC. (breaking change)

  • Replace local timezone with dateutil.tz.tzlocal(). Was previously set by the tzlocal library. (breaking change)

v0.8.0 (2016-10-31)#

  • Add comparison methods to Zulu:

    • is_before

    • is_on_or_before

    • is_after

    • is_on_or_after

    • is_between

v0.7.3 (2016-10-24)#

  • Optimize Zulu() constructor by eliminating multiple unnecessary calls to datetime constructor.

v0.7.2 (2016-09-06)#

  • Fix Zulu not being pickle-able.

v0.7.1 (2016-08-22)#

  • Add missing magic method overrides for Delta for +delta, -delta, and abs(delta) so that Delta is returned instead of datetime.timedelta.

    • __pos__

    • __neg__

    • __abs__

v0.7.0 (2016-08-22)#

  • Make Zulu.__sub__ and Zulu.subtract return a Delta object instead of datetime.timedelta.

  • Make zulu.delta and Zulu.Delta.parse accept a number.

  • Allow the first argument to Zulu.shift be a timedelta or relative delta object.

  • Ensure that mathematical magic methods for Delta return Delta objects and not datetime.timedelta.

    • __add__

    • __radd__

    • __sub__

    • __mul__

    • __rmul__

    • __floordiv__

    • __truediv__ (Python 3 only)

    • __div__ (Python 2 only)

    • __mod__ (Python 3 only)

    • __divmod__ (Python 3 only)

v0.6.0 (2016-08-14)#

  • Replace internal implementation of Unicode date pattern formatting with Babel’s format_datetime. breaking change

  • Remove support for formatting to timestamp using X and XX. breaking change

  • Rename parse-from-timestamp token from X to timestamp. breaking change

  • Add zulu.create as factory function to create a zulu.Zulu instance.

  • Add locale support to Zulu.format when using Unicode date pattern format tokens.

  • Restore locale support to Delta.format.

v0.5.0 (2016-08-13)#

  • Remove locale support from Delta.format. Locale is currently not supported in Zulu.format so decided to disable it in Delta.format until both can have it. breaking change

v0.4.0 (2016-08-13)#

  • Rename zulu.DateTime to zulu.Zulu. breaking change

  • Rename Zulu.isleap to Zulu.is_leap_year. breaking change

  • Remove zulu.format alias (function can be accessed at zulu.parser.format_datetime). breaking change

  • Remove Zulu.leapdays. breaking change

  • Add Zulu.days_in_month.

  • Add zulu.Delta class that inherits from datetime.timedelta.

  • Add zulu.delta as alias to zulu.Delta.parse.

  • Add Zulu.time_from, Zulu.time_to, Zulu.time_from_now, and Zulu.time_to_now that return “time ago” or “time to” humanized strings.

  • Add zulu.range as alias to Zulu.range.

  • Add zulu.span_range as alias to Zulu.span_range.

  • Make time units (years, months, weeks, days, hours, minutes, seconds, microseconds) keyword arguments only for Zulu.add/subtract, but allow positional argument to be an addable/subtractable object (datetime, timedelta, dateutil.relativedelta). breaking change

v0.3.0 (2016-08-03)#

  • Rename DateTime.sub to DateTime.subtract. breaking change

  • Allow the first argument to DateTime.add to be a datetime.timedelta or dateutil.relativedelta object.

  • Allow the first argument to DateTime.subtract to be a DateTime, datetime.datetime, datetime.timedelta, or dateutil.relativedelta object.

  • Provide zulu.ISO8601 and zulu.TIMESTAMP as parse/format constants that can be used in zulu.parse(string, zulu.ISO8601) and DateTime.format(zulu.ISO8601).

  • Remove special parse format string 'timestamp' in favor of using just 'X' as defined in zulu.TIMESTAMP. breaking change

  • Import zulu.parser.format to zulu.format.

  • Fix bug in DateTime addition operation that resulted in a native datetime being returned instead of DateTime.

v0.2.0 (2016-08-02)#

  • Add DateTime.datetime property that returns a native datetime.

  • Add DateTime.fromgmtime that creates a DateTime from a UTC based time.struct_time.

  • Add DateTime.fromlocaltime that creates a DateTime from a local time.struct_time.

  • Add DateTime.isleap method that returns whether its year is a leap year.

  • Add DateTime.leapdays that calculates the number of leap days between its year and another year.

  • Add DateTime.start_of/end_of and other variants that return the start of end of a time frame:

    • start/end_of_century

    • start/end_of_decade

    • start/end_of_year

    • start/end_of_month

    • start/end_of_day

    • start/end_of_hour

    • start/end_of_minute

    • start/end_of_second

  • Add DateTime.span that returns the start and end of a time frame.

  • Add DateTime.span_range that returns a range of spans.

  • Add DateTime.range that returns a range of datetimes.

  • Add DateTime.add and DateTime.sub methods.

  • Add years and months arguments to DateTime.shift/add/sub.

  • Drop support for milliseconds from DateTime.shift/add/sub. breaking change

  • Make DateTime.parse/format understand a subset of Unicode date patterns.

  • Set defaults for year (1970), month (1), and day (1) arguments to new DateTime objects. Creating a new DateTime now defaults to the start of the POSIX epoch.

v0.1.2 (2016-07-26)#

  • Don’t pin install requirements to a specific version; use >= instead.

v0.1.1 (2016-07-26)#

  • Fix bug in DateTime.naive that resulted in a DateTime object being returned instead of a native datetime.

v0.1.0 (2016-07-26)#

  • First release.