
私の同僚は、日付形式の前に追加されたログファイルを生成しています2015120
。たとえば、1
代わりに1月を表します01
。
この種の問題を処理する一般的な方法は、date
command.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
答え2
> date +'%Y %m %d' | ( read year month day; echo "${year}${month#0}${day}" )
2015120
答え3
ハイフン(-)の後に(1)を追加すると、Linuxで実行でき、次に移植することもできます。HP-UX(他の種類のUNIXがあるかもしれません):
$ date +'%Y%-1m%d'
2015120