我希望从当前偏移获取UNIX时间戳值(自1970年1月1日以来的秒数),同时将结果四舍五入到月初。
基本上我想要这个输出 - 从当前日期开始两个月,但是那个月的第一天。
date -d "2019-04-01" "+%s"
1554102000
但是我不想手动添加日期。我想做类似的事情:
date -d +"%Y%m" --date="+2 month" +"%s"
1555973219
但不幸的是,这给了我不正确的时间戳(结果没有四舍五入到月初)。
使用GNU date
证明这一切都能正常工作:
set -x
date
start_of_2mo_hence=$(date -d 'now + 2 months' +%Y-%m-01)
start_of_2mo_hence_sec=$(date -d "$start_of_2mo_hence" +%s)
date -d "@$start_of_2mo_hence_sec"
...发出:
+ date
Fri Feb 22 17:04:49 CST 2019
++ date -d 'now + 2 months' +%Y-%m-01
+ start_of_2mo_hence=2019-04-01
++ date -d 2019-04-01 +%s
+ start_of_2mo_hence_sec=1554094800
+ date -d @1554094800
Mon Apr 1 00:00:00 CDT 2019
当然,这可以简化为:
start_of_2mo_hence_sec=$(date -d "$(date -d 'now + 2 months' +%Y-%m-01)" +%s)
如果我明白你想做什么。这应该完成它,并始终给你从现在起2个月的月初。
date +"%Y-%m" -d "+2 month" | xargs -i date -d "{}-1" "+%s"
1554091200
虽然看起来我们处于不同的时区。您可以添加时区或将UTC标志添加到语句的xargs部分。