# HG changeset patch # User Matt Mackall # Date 1469650956 18000 # Node ID 491ee264b9f6e32b6e4dfe34180fb48226fc1641 # Parent 46b2ccce7fde422d6738fa43c8eaa4a2be3bfef4 date: accept broader range of ISO 8601 time specs The "normal" ISO date/time includes a T between date and time. It also allows dropping the colons and seconds from the timespec. Add new patterns for these forms as well as tests. diff -r 46b2ccce7fde -r 491ee264b9f6 mercurial/util.py --- a/mercurial/util.py Wed Jul 27 15:20:34 2016 -0500 +++ b/mercurial/util.py Wed Jul 27 15:22:36 2016 -0500 @@ -440,7 +440,14 @@ # used by parsedate defaultdateformats = ( - '%Y-%m-%d %H:%M:%S', + '%Y-%m-%dT%H:%M:%S', # the 'real' ISO8601 + '%Y-%m-%dT%H:%M', # without seconds + '%Y-%m-%dT%H%M%S', # another awful but legal variant without : + '%Y-%m-%dT%H%M', # without seconds + '%Y-%m-%d %H:%M:%S', # our common legal variant + '%Y-%m-%d %H:%M', # without seconds + '%Y-%m-%d %H%M%S', # without : + '%Y-%m-%d %H%M', # without seconds '%Y-%m-%d %I:%M:%S%p', '%Y-%m-%d %H:%M', '%Y-%m-%d %I:%M%p', diff -r 46b2ccce7fde -r 491ee264b9f6 tests/test-parse-date.t --- a/tests/test-parse-date.t Wed Jul 27 15:20:34 2016 -0500 +++ b/tests/test-parse-date.t Wed Jul 27 15:22:36 2016 -0500 @@ -258,3 +258,31 @@ $ hg log -d today --template '{desc}\n' Explicitly committed now. today is a good day to code + +Test parsing various ISO8601 forms + + $ hg debugdate "2016-07-27T12:10:21" + internal: 1469646621 * (glob) + standard: Wed Jul 27 12:10:21 2016 -0700 + $ hg debugdate "2016-07-27T12:10:21Z" + internal: 1469621421 0 + standard: Wed Jul 27 12:10:21 2016 +0000 + $ hg debugdate "2016-07-27T12:10:21+00:00" + internal: 1469621421 0 + standard: Wed Jul 27 12:10:21 2016 +0000 + $ hg debugdate "2016-07-27T121021Z" + internal: 1469621421 0 + standard: Wed Jul 27 12:10:21 2016 +0000 + + $ hg debugdate "2016-07-27 12:10:21" + internal: 1469646621 * (glob) + standard: Wed Jul 27 12:10:21 2016 -0700 + $ hg debugdate "2016-07-27 12:10:21Z" + internal: 1469621421 0 + standard: Wed Jul 27 12:10:21 2016 +0000 + $ hg debugdate "2016-07-27 12:10:21+00:00" + internal: 1469621421 0 + standard: Wed Jul 27 12:10:21 2016 +0000 + $ hg debugdate "2016-07-27 121021Z" + internal: 1469621421 0 + standard: Wed Jul 27 12:10:21 2016 +0000