如何在 Linux shell 中的“2015120”中表示日期格式?

Zen*_*Zen 6 command-line bash date

我的同事正在生成带有前面日期格式的日志文件,例如2015120,代表一月1而不是01.

我用来处理此类问题的常用方法是使用datecommand.Like date +'%Y%m%d'。但是我使用了日期命令,结果他们没有提到在没有前面的 0 的情况下代表一月。

所以我想知道是否有另一种方式来表示2015120Linux 中的日期 ?

cuo*_*glm 24

对于 GNU、FreeBSD 或 OS/X date(或date使用系统的libc's 的实现strftime(),即 GNU libc),-在后面添加连字符%可防止数字字段被零填充:

$ date +'%Y%-m%d'
2015120
Run Code Online (Sandbox Code Playgroud)

从GNU 系统上的man 日期开始:

默认情况下,日期用零填充数字字段。以下可选标志可以跟在 `%' 后面:

-(连字符)不要填充字段

如果您的系统date不支持,您可以使用perl

$ perl -MTime::Piece -e '
  $t = localtime;
  print $t->year, $t->mon, $t->mday;
'
2015122
Run Code Online (Sandbox Code Playgroud)

  • 我会添加一个不错的`# ...但你不想要那个!` 在同一行评论 (3认同)

Hau*_*ing 5

> date +'%Y %m %d' | ( read year month day; echo "${year}${month#0}${day}" )
2015120
Run Code Online (Sandbox Code Playgroud)