变量的日期格式

变量的日期格式

我需要编写一个带有“日期”函数的变量,并且我需要格式为 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#*:})))"

相关内容