NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1167 most downloaded on PyPI
This package provides a DateTime data type, as known from Zope. Unless you need to communicate with Zope APIs, you're probably better off using Python's built-in datetime module.
Last release 10 months ago
25 Nov 2025
Ships unpredictably
gaps range from 4 weeks to 3.4 years
Nearly every release is documented
notes for 32 of 33 stable releases
1 version withdrawn
withdrawn after publishing
19 years old
40 releases · first in 2008
Add support for Python 3.13, 3.14.
Add support for Python 3.13, 3.14.
Drop support for Python 3.7, 3.8, 3.9.
Remove setuptools fossils.
Remove Python2 compatiblity code.
Change pickle format to export the microseconds as an int, to solve a problem with dates after 2038. (#56 _)
Change pickle format to export the microseconds as an int, to solve a problem with dates after 2038. (#56)
One column per quarter.
Fix UnknownTimeZoneError when unpickling DateTime.DateTime().asdatetime(). (#58 _)
Add preliminary support for Python 3.13a2.
Add support for Python 3.12.
Add preliminary support for Python 3.13a2.
Cast int to float in compare methods.
Cast int to float in compare methods.
Fix compare methods between DateTime instances and None. (#52)
Add missing python_requires to setup.py.
Add missing python_requires to setup.py.
tagging release 5.0
tagging release 4.9
tagging version 4.8
Fix insidious buildout configuration bug that prevented tests on Python 2.7 and 3.5, and fix test code that was incompatible with Python 3.5. (#44)
Add support for Python 3.11.
Fix rounding problem with DateTime addition beyond the year 2038 (#41 _)
Fix rounding problem with DateTime addition beyond the year 2038 (#41)
Fix __format__ method for DateTime objects (#39 _)
Fix __format__ method for DateTime objects (#39)
Add __format__ method for DateTime objects (#35 _)
Add __format__ method for DateTime objects (#35)
Add support for Python 3.8, 3.9, and 3.10.
Fix WAT definition #31.
Add support for Python 3.8, 3.9, and 3.10.
Drop support for Python 3.4.
- Add support for Python 3.7.
Add support for Python 3.7.
Add support for Python 3.6, drop support for Python 3.3.
Add support for Python 3.6, drop support for Python 3.3.
Support unpickling instances having a numeric timezone like +0430.
Support unpickling instances having a numeric timezone like +0430.
Add support for Python 3.4 and 3.5.
Add support for Python 3.4 and 3.5.
Drop support for Python 2.6 and 3.2.
Provide more backward compatible timezones. [vangheem]
Provide more backward compatible timezones. [vangheem]
Added support for Python 3.2 and 3.3 in addition to 2.6 and 2.7.
Added support for Python 3.2 and 3.3 in addition to 2.6 and 2.7.
Removed unused legacy pytz tests and the DateTimeZone module and renamed some test internals.
Allow timezone argument to be a Unicode string while creating a DateTime object using two arguments.
Allow timezone argument to be a Unicode string while creating a DateTime object using two arguments.
LP #1045233: Respect date format setting for parsing dates like 11-01-2001.
LP #1045233: Respect date format setting for parsing dates like 11-01-2001.
Add _dt_reconstructor function introduced in DateTime 2.12.7 to provide forward compatibility with pickles that might reference this function.
Add _dt_reconstructor function introduced in DateTime 2.12.7 to provide forward compatibility with pickles that might reference this function.
Backwards compatibility of DateTime 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
No changes.
DateTime 3 changes its pickle representation. DateTime instances pickled with former versions of DateTime can be read, but older DateTime versions cannot read DateTime instances pickled with version 3.
DateTime 3 changes DateTime to be a new-style class with slots instead of being an old-style class.
DateTime 3 tries to preserve microsecond resolution throughout most of its API's while former versions were often only accurate to millisecond resolution. Due to the representation of float values in Python versions before Python 2.7 you shouldn't compare string or float representations of DateTime instances if you want high accuracy. The same is true for calculated values returned by methods like timeTime(). You get the highest accuracy of comparing DateTime values by calling its micros() methods. DateTime is not particular well suited to be used in comparing timestamps of file systems - use the time and datetime objects from the Python standard library instead.
Allow comparison of DateTime objects against None.
Allow comparison of DateTime objects against None.
Reverted the single argument None special case handling for unpickling and continue to treat it as meaning now.
Reverted the single argument None special case handling for unpickling and continue to treat it as meaning now.
Restored strftimeFormatter as a class.
Restored strftimeFormatter as a class.
Added tests for read-only class attributes and interface.
Removed deprecated _isDST and _localzone class variables.
Added back support for reading old DateTime pickles without a _micros value.
Avoid storing _t representing the time as a float in seconds since the epoch, as we already have _micros doing the same as a long. Memory use is down to about 300 bytes per DateTime instance.
Updated exception raising syntax to current style.
Avoid storing _aday, _fday, _pday, _amon, _fmon, _pmon, _pmhour and _pm in memory for every instance but look them up dynamically based on _dayoffset, _month and _hour. This saves another 150 bytes of memory per DateTime instance.
Moved various internal parsing related class variables to module constants.
No longer provide the DateError, DateTimeError, SyntaxError and TimeError exceptions as class attributes, import them from their canonical DateTime.interfaces location instead.
Removed deprecated _isDST and _localzone class variables.
Moved pytz cache from DateTime._tzinfo to a module global _TZINFO.
Make DateTime a new-style class and limit its available attributes via a slots definition. The pickle size increases to 110 bytes thanks to the ccopy_regn_reconstructor stanza. But the memory size drops from 3kb to 500 bytes for each instance.
Removed deprecated support for using DateTime.__cmp__.
Reordered some calculations in _calcIndependentSecondEtc to preserve more floating point precision.
Optimized the pickled data, by only storing a tuple of _micros and time zone information - this reduces the pickle size from an average of 300 bytes to just 60 bytes.
Optimized un-pickling, by avoiding the creation of an intermediate DateTime value representing the current time.
Removed in-place migration of old DateTime pickles without a _micros value.
Removed deprecated support for using DateTime.__cmp__.
Take time zone settings into account when comparing two date times for (non-) equality.
Fixed (possibly unused) _parse_iso8601 function.
Removed unused import of legacy DateTimeZone, strftime and re. Remove trailing whitespace.
Removed reference to missing version section from buildout.
Nothing published for this version
Added forward compatibility with DateTime 3 pickle format. DateTime instances constructed under version 3 can be read and unpickled by this version. T
Added forward compatibility with DateTime 3 pickle format. DateTime instances constructed under version 3 can be read and unpickled by this version. The pickled data is converted to the current versions format (old-style class / no slots). Once converted it will be stored again in the old format. This should allow for a transparent upgrade/downgrade path between DateTime 2 and 3.
Changed testDayOfWeek test to be independent of OS locale.
Changed testDayOfWeek test to be independent of OS locale.
Launchpad #143269: Corrected the documentation for year value behavior when constructing a DateTime object with three numeric arguments.
Launchpad #143269: Corrected the documentation for year value behavior when constructing a DateTime object with three numeric arguments.
Launchpad #142521: Removed confusing special case in DateTime.__str__ where DateTime instances for midnight (e.g. '2010-07-27 00:00:00 US/Eastern') values would render only their date and nothing else.
Fixed mapping of EDT (was -> 'GMT-0400', now 'GMT-4').
Fixed mapping of EDT (was -> 'GMT-0400', now 'GMT-4').
Added EDT timezone support. Addresses bug #599856. [vangheem]
Added EDT timezone support. Addresses bug #599856. [vangheem]
Launchpad #572715: Relaxed pin on pytz, after applying a patch from Marius Gedminus which fixes the apparent API breakage.
Launchpad #572715: Relaxed pin on pytz, after applying a patch from Marius Gedminus which fixes the apparent API breakage.
Removed an undeclared testing dependency on zope.testing.doctest in favor of the standard libraries doctest module.
Removed an undeclared testing dependency on zope.testing.doctest in favor of the standard libraries doctest module.
Added a maximum version requirement on pytz <= 2010b. Later versions produce test failures related to timezone changes.
Launchpad #290254: Forward-ported fix for '_micros'-less pickles from the Zope 2.11 branch version.
Launchpad #290254: Forward-ported fix for '_micros'-less pickles from the Zope 2.11 branch version.
Include *all* pytz zone names, not just "common" ones.
Include all pytz zone names, not just "common" ones.
Fix one fragile doctest, band-aid another.
Fix for launchpad #267545: DateTime(DateTime()) should preserve the correct hour.
DateTime conversion of datetime objects with non-pytz tzinfo. Timezones() returns a copy of the timezone list (allows tests to run).
DateTime conversion of datetime objects with non-pytz tzinfo. Timezones() returns a copy of the timezone list (allows tests to run).
Merged the slinkp-datetime-200007 branch: fix the DateTime(anotherDateTime) constructor to preserve timezones.
Split off from the Zope2 main source code tree.
Split off from the Zope2 main source code tree.
Your coding agent can read these notes before it upgrades. Set up the MCP server →