我认为这是完美的,也许你也会喜欢它:

我认为这是完美的,也许你也会喜欢它:

回答评论提到了--rfc-3339一个“隐藏”--iso-8601选项,我已经使用了很长时间,现在似乎没有记录。

该选项文档何时从文本中删除--help

该选项很快就会消失吗?

答案1

date该选项于 1999 年(4 月 8 日)在 coreutils(可能就是您所拥有的)中引入。

该文档已被删除于2005年提交中没有太多解释。

2011年,重新引入了 --iso-8601 的帮助,并进行了以下解释:

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.

看起来该帮助在 5.90 版本中被删除,并在 8.15 版本中放回(它不在我的 8.13 中),上面的评论表明它现在又回来了,并且不太可能很快消失。

在版本 8.31(由 Solus 2020 年 7 月提供)中,手册页有以下两个选项:

   -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

答案2

对于一个独立的平台,(几乎)完全兼容, ISO 8601 日期,使用这个:

date +"%Y-%m-%dT%H:%M:%S%z"

这将导致如下时间:2021-01-16T23:09:44-0500

这应该适用于 macOS (BSD) 和 Linux。

从技术上来说,对于满的合规性,应该是:

date +"%Y-%m-%dT%H:%M:%S%:z"

请注意偏移量(时区)字段包含冒号“ :之间' %'和' z'。  这将导致完全投诉 ISO 8601 时间如:2021-01-16T23:09:44-05:00

但是这个在 macOS 上工作(截至撰写本文时)。这应该可以在 Linux 上运行(即使用 GNU  date)。

为了世界标准时间时间(零偏移,历史上称为“祖鲁时间”),您可以使用(注意-u, 来获取 UTC 时间,并注意 ' Z' 是不是前面有一个“ %”(或冒号)——它是一个文字“ Z”):

date -u +"%Y-%m-%dT%H:%M:%SZ"

这将导致如下时间:2021-01-17T04:16:14Z

答案3

--help 最近实际上得到了更新,所以该选项肯定不会消失:

-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

请注意,由于 coreutils-8.27--rfc-2822已被弃用,有利于更通用的--rfc-email

     -R, --rfc-email       output date and time in RFC 5322 format.
                             Example: Mon, 14 Aug 2006 02:34:56 -0600

答案4

我认为这是完美的,也许你也会喜欢它:

date -u --iso-8601=ns | sed s/+00:00/Z/ | sed s/,/./

结果示例:2022-12-10T20:44:36.753578818Z

相关内容