Linuxシェルで「2015120」の日付形式をどのように表現しますか?

Linuxシェルで「2015120」の日付形式をどのように表現しますか?

私の同僚は、日付形式の前に追加されたログファイルを生成しています2015120。たとえば、1代わりに1月を表します01

この種の問題を処理する一般的な方法は、datecommand.Likeを使用することですdate +'%Y%m%d'。しかし、私はdateコマンドを使用し、それが1月を表すと言及しておらず、前にゼロがないことがわかりました。

2015120それで、Linuxのように日付を表​​現する別の方法があるかどうか疑問に思います。

ベストアンサー1

GNU、FreeBSD、またはOS / X date(またはGNUであるdateシステムlibc実装を使用)の場合、末尾のハイフンを追加すると、数値フィールドがゼロで埋められるのを防ぐことができます。strftime()libc-%

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

~から承認するGNUシステムでは:

デフォルトでは、日付は数値フィールドをゼロで埋めます。次のオプションのフラグは「%」の後に続くことができます。

- (ハイフン) このフィールドを埋めないでください。

システムがdateそれをサポートしていない場合は、次のものを使用できますperl

$ perl -MTime::Piece -e '
  $t = localtime;
  print $t->year, $t->mon, $t->mday;
'
2015122

おすすめ記事