特定の日付を表示

特定の日付を表示

dateコマンドを使用してUnixで特定の日付を表示しようとしていますが、今日ではない日付を表示する方法がわかりません。

たとえば、表示しようとすると、July 4, 2011次のようになります。

$ date +"%B %d, %Y"

ところで、今日の日付がずっとこんな形式で出てきますね。希望の日付を表示するにはどうすれば変更できますか?

答え1

Linuxを実行している場合:

date +"%B %d, %Y" -d 2011-07-04

~からman date:

   -d, --date=STRING
          display time described by STRING, not 'now'

答え2

通常、dateこれはこの目的のためのツールではありません(GNU Dateなどの一部の実装では、これを非標準拡張として持つことができます)。

移植可能な日付操作が必要な場合に最善の方法は、そのモジュールperl(ほぼすべてのBembed Unixにインストールされている)の機能を使用することです。ユーザーフレンドリーな他の日付操作モジュールがたくさんありますが、通常、少なくとも以前のバージョンではデフォルトではインストールされません。POSIXstrftimemktimeperlperl

perl -MPOSIX -le 'print strftime "%B %d, %Y", @ARGV' 0 0 0 4 7 "$((2011 - 1900))"

関連情報