我需要編寫一個帶有“日期”函數的變量,並且我需要格式為 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#*:})))"