[Datetime-SIG] Matching +-HH:MM in strptime

Mario Corchero mariocj89 at gmail.com
Thu Oct 19 18:12:45 EDT 2017


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 <orent at hishome.net> 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 <paul at ganssle.io> 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
> > Datetime-SIG at python.org
> > 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
> Datetime-SIG at python.org
> https://mail.python.org/mailman/listinfo/datetime-sig
> The PSF Code of Conduct applies to this mailing list:
> https://www.python.org/psf/codeofconduct/
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/datetime-sig/attachments/20171019/e82d43ad/attachment.html>


More information about the Datetime-SIG mailing list