我正在努力解决如何在特定时间范围内将正确的日期放入我的shell脚本中的问题。 例如,我需要检查我是否在正确的范围内根据日期生成一些文件(上午12点至凌晨3点)
到目前为止,我正在检查:
workflow_start_time=$(date -d "$(date +%Y-%m-%d) 23:00:00" +"%s")
scheduled_run_time=$workflow_start_time
if [ "$(date -d @${scheduled_run_time} +"%H")" -ge 23 ] && [ "$(date -d @${scheduled_run_time} +"%H")" -lt 2 ]; then
从23开始,因为我需要考虑1小时的服务器差异,所以这将从12开始,应该在凌晨2点左右结束,这将是凌晨3点。
这里有什么帮助吗?
答案 0 :(得分:0)
将日期转换为时间戳。
toStamp() { date --date="$1" +%s; }
检查日期是否在其他日期之间。
# [$1, $2): bounds
# $3 current date
isBetween() {
[[ `toStamp $1` -le `toStamp $3` ]]&&\
[[ `toStamp $2` -gt `toStamp $3` ]]
}
或
isTimeStampBetween() {
[[ $1 -le $3 ]]&&\
[[ $2 -gt $3 ]]
}
如果您只有时间戳。
检查日期是否在2个其他日期之间的示例是:
if $(isBetween 2012 2020 2013) ; then dosomething
您可以在文件中包含这些功能。