我需要编写一个带有“日期”函数的变量,并且我需要格式为 yyyymmdd (即 20151031)。另外我会删除一天(即 20151031 变成 20151030)我会使用 bash。
谢谢!
答案1
用于date +%Y%m%d
打印当前日期。
用于date --date '1 day ago' +%Y%m%d
打印昨天的日期(GNU 的date
)。
使用date -v -1d +Y%m%d
(FreeBSD)。
答案2
bash-4.2 及更高版本对此有内置支持(受到 ksh93 中类似内容的启发):
printf -v now '%(%s)T' -1
printf '%(%Y%m%d)T\n' "$((now - 86400))"
将以 YYYYMMDD 格式打印昨天的日期(嗯,86400 秒前的日期)。如果在冬季/夏季时间切换时(当白天长为 23 或 25 小时时)夜间的某些时间运行,它可能无法工作。
如果写成以下形式,对于那些极端情况可能会更可靠:
printf -v now '%(%s:%H)T' -1
printf '%(%Y%m%d)T\n' "$((${now%:*} - 3600 * (12 + ${now#*:})))"