shell脚本,用于2个不同日期之间的日期

时间:2017-11-29 10:11:17

标签: bash shell date

我正在努力解决如何在特定时间范围内将正确的日期放入我的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点。

这里有什么帮助吗?

1 个答案:

答案 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

您可以在文件中包含这些功能。