내 생각엔 이것이 완벽하다고 생각합니다. 아마도 당신도 좋아할 것입니다.

내 생각엔 이것이 완벽하다고 생각합니다. 아마도 당신도 좋아할 것입니다.

이것답변댓글에는 제가 오랫동안 사용해 왔지만 지금은 문서화되지 않은 것 같은 --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(2020년 7월 Solus에서 제공)의 매뉴얼 페이지에는 다음 두 가지 옵션이 있습니다.

   -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.

~을 위한UTC시간(제로 오프셋, 역사적으로 "Zulu 시간"으로 알려져 있음)을 사용하여 -uUTC 시간을 얻을 수 있으며 ' 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

관련 정보