241

Bashスクリプトで、現在の日時をISO 8601形式(できればUTC)で出力したいのですが、これは次のように単純なはずですdate -I

http://ss64.com/bash/date.html

しかし、これは私のMacでは機能しないようです。

$ date -I
date: illegal option -- I
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

そして確かに、man dateこのオプションはリストされていません。

これがなぜであるか、またはISO 8601形式で日付を印刷する他の(簡単な)方法を知っている人はいますか?ありがとう!

4

9 に答える 9

406

あなたが使うことができます

date "+%Y-%m-%d"

または、 ISO-8601に完全に準拠した日付の場合は、次のいずれかの形式を使用します。

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

出力:

2011-08-27T23:22:37Z

また

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

出力:

2011-08-27T15:22:37-0800
于 2011-08-27T18:12:30.290 に答える
65

GNU では日付はとdate -I同じでdate +%F、UTC オフセットの時刻も含まれます。-Iseconds-Iminutes

$ date +%F # -I or +%Y-%m-%d
2013-05-03
$ date +%FT%T%z # -Iseconds or +%Y-%m-%dT%H:%M:%S%z
2013-05-03T15:59:24+0300
$ date +%FT%H:%M # -Iminutes or +%Y-%m-%dT%H:%M%z
2013-05-03T15:59+0300

-uのようTZ=UTCです。+00:00で置き換えることができますZ

$ date -u +%FT%TZ
2013-05-03T12:59:24Z

これらも有効な ISO 8601 日付または時刻形式です。

20130503T15 (%Y%m%dT%M)
2013-05 (%Y%m)
2013-W18 (%Y-W%V)
2013-W18-5 (%Y-W%V-%u)
2013W185 (%YW%V%u)
2013-123 (%Y-%j, ordinal date)
2013 (%Y)
1559 (%H%M)
15 (%H)
15:59:24+03 (UTC offset doesn't have to include minutes)

これらは次のとおりではありません。

2013-05-03 15:59 (T is required in the extended format)
201305 (it could be confused with the YYMMDD format)
20130503T15:59 (basic and exteded formats can't be mixed)
于 2013-05-03T14:11:04.427 に答える
27

GNU と BSD の両方の日付で機能する短い代替手段は次のとおりです。

date -u +%FT%T%z
于 2015-12-07T16:27:58.047 に答える
24

coreutils パッケージは、ツールの GNU バージョンを提供します。インストールするには:

$ brew install coreutils

提供されているものを見ることができます:

$ brew list coreutils

日付が付いていることに注意してください:

$ brew list coreutils | grep date

これは標準の GNU date コマンドであるため、-I スイッチを使用します。

$ gdate -I
2016-08-09
于 2016-08-09T16:29:29.447 に答える
7

通常のdateフォーマットオプションを使用するだけです。

date '+%Y-%m-%d'

編集:時間とUTCを含めるには、これらは同等です:

date -u -Iseconds

date -u '+%Y-%m-%dT%k:%M:%S%z'
于 2011-08-27T18:11:54.917 に答える
3

これはBashの機能ではなく、dateバイナリの機能です。Linuxでは通常GNUcoreutilsバージョンのがありdateますが、OSXではBSDレガシーユーティリティがあります。GNUバージョンは確かにオプションのパッケージとしてインストールすることも、独自の代替品をロールバックすることもできます。たとえば、Perlのような単純なワンライナーである必要があると思います。

于 2011-08-27T18:14:58.897 に答える
2

coreutilsMacOSX用のプリコンパイル済みパッケージは次の場所で入手できます。

http://rudix.org/packages-abc.html#coreutils

于 2011-08-28T10:03:10.720 に答える