web-dev-qa-db-ja.com

Bashでの日付と時刻の組み合わせ表現

Bashを使用して次の形式で現在の日付を取得する方法

YYYY-MM-DDThh:mm:ss

22
Misha Slyusarev

これらのオプションでは:

$ date "+%Y-%m-%d %H:%M:%S"
2013-10-24 10:40:12

または(Bireiに感謝!)

$ date "+%F %T"
2013-10-24 10:40:12

すべてのフォーマットコントロールはman dateから取得できます。

Tの意味がわかりませんが、たとえば次のようなものがあります。

$ date "+%F %T %Z"
2013-10-24 10:40:12 CEST

MacOS Bashユーティリティの互換性を高める

コマンドラインを使い始めるときに、質問に答えてあなたを助けることができるユーザーの巨大なコミュニティがあることはとても素晴らしいです。 macOSを使用している場合、Appleの特定の選択と実装により、非常に優れたアドバイスの一部が正しく機能しません。

互換性がある

物事を行う方法はたくさんあります。単純に正しく機能するようにしたいだけの場合を除いて、どちらの方法でも特に好みはありません。ここに投稿する大多数のユーザーと「互換性」があると、あなたの生活がよりシンプルになります。 Coreutils は、macOSを標準のLinuxツールとより「互換」にする free ソフトウェアです。

オタクサイドバー

超オタクの詳細と哲学に興味がある場合、または独自のユーティリティを作成したい場合は、ツールの設計を探る このページ on MaiZureのプロジェクト が好きです。これは公式の github リポジトリであり、1983年に始まった数十年にわたる開発からのさまざまなツールと改善が含まれています。ご想像のとおり、これはさまざまなクラシックのガンボです sysop 言語。

C 57.5% Shell 24.1% Perl 13.1% Makefile 2.2% C++ 2.1%

それを機能させるだけ!

正しく機能させたいほとんどの人は、coreutilsをインストールし、シンボリックリンクして元のファイルを置き換えます。手順はパッケージに含まれています。

Coreutilsは、標準の(組み込みではない)ユーティリティセットであり、インターネット上で見られる "linux-ish"のアドバイスの多くとより "互換性"があります。どちらのシェル(BASH、ZSHなど)を使用する場合でも、次の方法であなたの人生muchをより簡単にすることができますこのGNUコアユーティリティのセットをインストールします。

GNUウェブサイトから:

Coreutils-GNUコアユーティリティ

Coreutilsの概要

GNUコアユーティリティは、GNUオペレーティングシステムの基本的なファイル、シェルおよびテキスト操作ユーティリティです。これらはコアユーティリティです)すべてのオペレーティングシステムに存在すると予想されます。

それらをmacOSにインストールする最も簡単な方法は Homebrew を使用することです。

$ brew install coreutils

これに興味がある場合は、moreutilsと呼ばれる無関係なアクティブなプロジェクトも検討して作成してくださいもっと便利utils。私は間違いなくこれらをよりオプションで状況に応じて検討しますが、便利です。

$ brew install moreutils

この問題の特定の解決策を見つけると決心した場合は、以下を〜/ .bash_profile(またはあなたが持っているシェル)に追加してください:

mydate() { [[ "$1" = "-I" ]] && command date "+%Y-%m-%dT%H:%M:%S%z" || command date "$@"; }

物事を行うには非常に多くの方法があります。それらのほとんどの評価は必然的に意見が分かれます。シンプルで効果的なさまざまなツールの豊富な歴史があり、今日に至るまで私たちを導きました。いろいろなものが大好きです。それは本当に「あなたのマイレージは変わるかもしれない」という考えを体現しています。

  • ymmv
0
Michael Treanor

@karfauですでに指摘されているように、date -I(iso-8601)形式を使用します。

$ man date
       -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

例:

$ date -I
2018-10-23

$ date -Iminutes
2018-10-23T14:56-07:00

$ date -Iseconds
2018-10-23T14:56:44-07:00
0
Alec Istomin