bug#80118: Don't just say "invalid date"

Pádraig Brady <[email protected]> Sat, 3 Jan 2026 23:48:35 +0000
Newsgroups gmane.comp.gnu.core-utils.bugs
Message-ID <[email protected]>
On 03/01/2026 21:50, Collin Funk wrote:
> Paul Eggert <[email protected]> writes:
> 
>> On 2026-01-02 21:59, Dan Jacobson wrote:
>>> also consider dealing with ET.
>>
>> Good luck with that. Is that eastern Australia time, eastern European
>> time, eastern North America time,
>> Ecuador/Egypt/Eritrea/Estonia/Eswatini/Ethiopia Time, East Timor, or
>> something else? For what it's worth, POSIX does not allow "ET"; time
>> zone abbreviations must be at least 3 characters. Also, real-world
>> abbreviations are ambiguous, such as "IST" simultaneously standing for
>> time in India, Ireland, and Israel.

Yes location based zones are better than these abbreviations as I noted at:
https://www.pixelbeat.org/docs/linux_timezones/

> +1. The use of "IST" especially annoys me every once in a while since I
> work with people in both India and Israel.

and Ireland :)

>>> $ date -d '01/30/2026 02:00 PM ET'
>>> date: invalid date ‘01/30/2026 02:00 PM ET’
>>> Don't just say "invalid date". Say "invalid date: weird time zone".
>>
>> Yes, it'd be nice if the date parser pointed out exactly what it
>> didn't like.
> 
> We could probably have parse_datetime return an enum error code, which
> would allow existing programs expecting a bool to work without changes.
> It would take some work to implement, though.

Note we have the --debug option which is a catchall for a lot of these issues,
and I think suffices for this:

   $ date --debug -d '01/30/2026 02:00 PM ET'
   date: warning: value 1 has less than 4 digits. Assuming MM/DD/YY[YY]
   date: parsed date part: (Y-M-D) 2026-01-30
   date: parsed time part: 02:00:00pm
   date: error: unknown word 'ET'
   date: error: parsing failed
   date: invalid date ‘01/30/2026 02:00 PM ET’

cheers,
Padraig