当我运行此命令以从日期“ 20181102 ”(格式: YYYYMMDD )获取年份信息时,它工作正常:
$ echo $(date --date="20181102" +"%Y")
2018
但是当我尝试使用其他日期“ 20181104 ”时,出现错误:
$ echo $(date --date="20181104" +"%Y")
date: invalid date ‘20181104’
这是任何错误吗?还是我做错了什么?
答案 0 :(得分:0)
GNU date
实用程序有点粗糙,并且不断误解输入字符串。为了达到良好的效果,请尝试始终在date
秒之后的@
秒内给出日期,或者以man date中的一种形式给出日期,例如"2004-02-29 16:21:42"
。 (除非您有freebsd date且具有-f
选项。)
str=20181102
date --date="$(echo "$str" | cut -c 1-4)-$(echo "$str" | cut -c 5,6)-$(echo "$str" | cut -c 7,8) 00:00:00" +%Y
但是实际上,如果您知道年份的前4个字符,为什么不仅仅获得前4个字符?
str=20181102
echo "$str" | cut -c 1-4
还要注意,进行echo $(date ...)
是没有意义的。只是date ...
。完全不需要echo
。