我的同事正在生成带有前置日期格式的日志文件2015120
,例如 ,它代表一月而1
不是01
。
我处理此类问题的常用方法是使用date
command.Like date +'%Y%m%d'
。但我使用了 date 命令,结果发现他们没有提到代表一月,前面没有 0。
所以我想知道是否有另一种方式来表示日期,就像 2015120
在 Linux 中一样?
答案1
对于 GNU、FreeBSD 或 OS/X date
(或date
使用系统的libc
' 的实现strftime()
,其中即 GNU 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 上运行,并且也可以移植到惠普-UX(可能还有其他风格的 UNIX):
$ date +'%Y%-1m%d'
2015120