I think glibc does accept +HH:MM since the patch in 2015 by Vincent Bernat: e952e1df
It basically added the following lines: + if (*rp == ':' && n == 2 && isdigit (*(rp + 1))) + ++rp; Which effectively just skips the ":". See http://code.metager.de/source/xref/gnu/glibc/time/strptime_l.c#765 (you can also download the source from http://ftp.gnu.org/gnu/glibc <http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.bz2> to see the commits) Same about accepting 'Z' in 900f33e2. Same person submitting the patch. On 19 October 2017 at 21:07, Oren Tirosh <[email protected]> wrote: > https://github.com/orent/cpython/tree/strptime_extensions > > %:z - matches +HH:MM > %?:z - optional %:z > %.f - equivalent to .%f > %?.f - optional %.f > %?t - matches ' ' or 'T' > > What they all have in common is that together they make it possible to > write a strptime format that matches all possible output variations of > datetime.__str__/ datetime.isoformat. > > The time zone not only supports the : separator but also allows making the > entire component optional, as isoformat() will add it only for aware > datetime objects. The seconds fraction is dropped from the default string > representation if the datetime represents a whole second. Since it is > dropped along with the decimal dot, I first made "%.f" that includes the > dot and then created the optional variant. Finally, "%?t" can be used to > accept a timestamp with either of the separators defined in iso8601. > > It is quite absurd that datetime cannot parse its own string > representation. Using these extensions an .isoparse() method may be added > that calls strptime('%Y-%m-%d%?t%H:%M:%S%?.f%?:z') and supports full > round-tripping of all possible datetime values that do not not use a custom > tzinfo. > > Oren > > > > On Thu, 19 Oct 2017 at 17:06, Paul G <[email protected]> wrote: > > > > There is a new issue about the %z directive in strptime on the issue > tracker: https://bugs.python.org/issue31800 (linked to a few related > issues), and a linked PR expanding the definition of %z to match HH:MM: > https://github.com/python/cpython/pull/4015 > > > > I think either adding a %:z directive or expanding the definition of %z > would be pretty important, and I think there's a good case to be made for > either one. To summarize the arguments for people on the mailing list: > > > > The argument for expanding the definition of %z that I find strongest is > that according to the linux man pages ( http://man7.org/linux/man- > pages/man3/strptime.3.html ), while %z generates +-HHMM in strftime, > strptime is supposed to match "An RFC-822/ISO 8601 standard timezone > specification",and ISO 8601 uses +-HH:MM, so if we're following those linux > pages, we should be accepting the version with the colon. > > > > The argument that I find most compelling for adding a %:z directive are: > > > > 1. maintains the symmetry between strftime and strptime > > 2. allows users to be stricter about their datetime format > > 3. has precedent in that GNU's `date` command accepts %z, %:z and > %::z formats > > > > Can we establish some consensus on which should be done so that it can > be implemented? > > > > Best, > > > > Paul > > > > _______________________________________________ > > Datetime-SIG mailing list > > [email protected] > > https://mail.python.org/mailman/listinfo/datetime-sig > > The PSF Code of Conduct applies to this mailing list: > https://www.python.org/psf/codeofconduct/ > > _______________________________________________ > Datetime-SIG mailing list > [email protected] > https://mail.python.org/mailman/listinfo/datetime-sig > The PSF Code of Conduct applies to this mailing list: > https://www.python.org/psf/codeofconduct/ > >
_______________________________________________ Datetime-SIG mailing list [email protected] https://mail.python.org/mailman/listinfo/datetime-sig The PSF Code of Conduct applies to this mailing list: https://www.python.org/psf/codeofconduct/
