我希望获得给定时间的时间范围。开始时间应为给定时间之前 60 分钟,结束时间应为给定时间之后 60 分钟。
目的:给定的时间就像“影响时间”,我希望在影响时间周围获得合适的时间范围,以便能够抓取日志。
示例:给定时间为 2018-05-16 20:30:00 格式为 '%Y-%m-%d %H:%M:%S'
请帮我获取: 开始时间是 2018-05-16 19:30:00 结束时间是 2018-05-16 21:30:00
这将在始终处于 PDT/PST 模式的服务器上运行,并且日期时间的格式为“%Y-%m-%d %H:%M:%S”
答案1
假设时区和 GNU 日期设置正确,您可以获取 Unix 时间戳,减去、加上 60 分钟,然后将其转换回所需的格式:
$ ts=$(date -d "2018-05-16 21:30:00" +%s) # For BSD date: date -jf "%F %T" "2018-05-16 21:30:00" +%s
$ echo "$(date -d@$((ts - 3600)) +"%F %T")"
2018-05-16 20:30:00
$ echo "$(date -d@$((ts + 3600)) +"%F %T")"
2018-05-16 22:30:00
...我认为这不能正确解释闰秒并且每个程序员都应该了解的关于时间的各种其他问题。