You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux bash脚本校验输入日期是否距当前日期满7天及以上

Bash 实现日期校验:判断输入日期是否距今已满7天及以上

实现原理

将输入日期、当前日期都转换为Unix时间戳(从1970-01-01 00:00:00 UTC到对应时间的秒数),计算二者的差值后换算为天,和7做比较即可。本方案基于GNU Date实现,适配绝大多数Linux发行版。

完整脚本示例

#!/bin/bash

# 校验是否传入日期参数
if [ $# -ne 1 ]; then
    echo "使用方式:$0 <待校验日期,格式如YYYY-MM-DD>"
    exit 1
fi

INPUT_DATE="$1"
# 校验输入日期是否合法
if ! date -d "$INPUT_DATE" +%s >/dev/null 2>&1; then
    echo "错误:输入的日期格式不合法,请使用GNU Date可识别的格式(如YYYY-MM-DD)"
    exit 1
fi

# 转换为时间戳
INPUT_TIMESTAMP=$(date -d "$INPUT_DATE" +%s)
CURRENT_TIMESTAMP=$(date +%s)
# 计算秒数差
DIFF_SEC=$((CURRENT_TIMESTAMP - INPUT_TIMESTAMP))
# 7天对应的秒数:7*24*3600=604800
SEVEN_DAYS_SEC=604800

if [ $DIFF_SEC -ge $SEVEN_DAYS_SEC ]; then
    echo "校验结果:输入日期 $INPUT_DATE 距离当前已满7天或更久"
    exit 0
else
    echo "校验结果:输入日期 $INPUT_DATE 距离当前不满7天"
    exit 2
fi

使用说明

  • 把上述代码保存为check_7days.sh,给执行权限:chmod +x check_7days.sh
  • 运行示例:
    • 校验横杠分隔格式日期:./check_7days.sh 2024-05-01
    • 校验斜杠分隔格式日期:./check_7days.sh 2024/05/01

自定义适配说明

  • 如果需要按自然日计算(忽略时分秒,只要日期差≥7就算满7天),可以把时间戳转换逻辑替换为以下代码,取当日0点的时间戳计算:
    INPUT_TIMESTAMP=$(date -d "$(date -d "$INPUT_DATE" +%Y-%m-%d) 00:00:00" +%s)
    CURRENT_TIMESTAMP=$(date -d "$(date +%Y-%m-%d) 00:00:00" +%s)
    
  • 如果输入的是自定义格式日期(如DD/MM/YYYY),可以用date命令先转成标准格式,需要保证date能识别你的输入格式即可。
  • macOS系统默认自带的是BSD Date,参数不兼容,可先安装coreutils后把脚本中的date替换为gdate使用。

内容的提问来源于stack exchange,提问作者Samuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:06:05