This answer and comments mention --rfc-3339 and a “hidden” --iso-8601 option that I have used for a long time and now seems to be undocumented.
When did that option documentation get removed from the --help text?
Will the option go away anytime soon?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
The option was introduced in the coreutils date (which is probably what you have) in 1999 (Apr. 8).
The documentation was removed in 2005 without much explanation in the commit.
In 2011, the help for –iso-8601 was reintroduced with the following explanation:
We deprecated and undocumented the --iso-8601 (-I) option mostly because date could not parse that particular format. Now that it can, it's time to restore the documentation. * src/date.c (usage): Document it. * doc/coreutils.texi (Options for date): Reinstate documentation. Reported by Hubert Depesz Lubaczewski in http://bugs.gnu.org/7444.
It looks like the help was taken out in version 5.90 and put back in, in version 8.15 (it is not in my 8.13) and the comment above suggests that it is now back to stay and not likely to be disappearing any time soon.
In version 8.31 (as provided by Solus July 2020) the man page descriptions for two two options are:
-I[FMT], --iso-8601[=FMT]
output date/time in ISO 8601 format. FMT='date' for date only (the default), 'hours', 'minutes', 'sec‐
onds', or 'ns' for date and time to the indicated precision. Example: 2006-08-14T02:34:56-06:00
--rfc-3339=FMT
output date/time in RFC 3339 format. FMT='date', 'seconds', or 'ns' for date and time to the indicated
precision. Example: 2006-08-14 02:34:56-06:00
Method 2
For a platform independent, (almost) fully compliant, ISO 8601 date use this:
date +"%Y-%m-%dT%H:%M:%S%z"
This will result in a time such as: 2021-01-16T23:09:44-0500
This should work on BSD and Linux.
for full compliance it should be:
date +"%Y-%m-%dT%H:%M:%S:%z"
(Note the offset has a colon it it.) This will result in a time such as: 2021-01-16T23:09:44-05:00
But this doesn’t work on Mac OSX (as of this writing).
For UTC time (zero offset) you can use (note the -u):
date -u +"%Y-%m-%dT%H:%M:%SZ"
This will result in a time such as: 2021-01-17T04:16:14Z
Method 3
The –help got an update recently actually, so the option definitely isn’t going away:
-I[FMT], --iso-8601[=FMT] output date/time in ISO 8601 format.
FMT='date' for date only (the default),
'hours', 'minutes', 'seconds', or 'ns'
for date and time to the indicated precision.
Example: 2006-08-14T02:34:56-06:00
-R, --rfc-2822 output date and time in RFC 2822 format.
Example: Mon, 14 Aug 2006 02:34:56 -0600
--rfc-3339=FMT output date/time in RFC 3339 format.
FMT='date', 'seconds', or 'ns'
for date and time to the indicated precision.
Example: 2006-08-14 02:34:56-06:00
Note since coreutils-8.27 --rfc-2822 is deprecated in favor of the more general --rfc-email
-R, --rfc-email output date and time in RFC 5322 format.
Example: Mon, 14 Aug 2006 02:34:56 -0600
Method 4
I’m running Linux Mint and the option is available:
$ lsb_release -a No LSB modules are available. Distributor ID: LinuxMint Description: Linux Mint 17.3 Rosa Release: 17.3 Codename: rosa
The execution of the command:
$ date --iso-8601=seconds 2016-12-14T09:53:25-0400
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0