Linux Shell脚本日期校验

本文遵循BY-SA版权协议,转载请附上原文出处链接。


本文作者: 黑伴白

本文链接: http://heibanbai.com.cn/posts/dc382566/

编写函数,实现Linux Shell中对日期的校验,匹配如下几种格式:

  • yyyymmdd:必须为8位合法日期
  • yyyy-mm-dd:以’-‘分隔的合法日期,不校验长度,即可以为2022-06-09,也可以为2022-06-9、2022-6-9等
  • yyyy/mm/dd:以’/‘分割的合法日期,不校验长度,即可以为2022/06/09,也可以为2022/06/9、2022/6/9等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
check_date(){
# 计算传入日期的原长度
dt=$1
len_dt=${#dt}
# 计算去除-分隔符后的长度
dt2=${dt//-/}
len_dt2=${#dt2}
# 计算去除/分隔符后的长度
dt3=${dt////}
len_dt3=${#dt3}
# 计算原长度和去除分隔符后长度差
p2=`echo $(($len_dt-$len_dt2))`
p3=`echo $(($len_dt-$len_dt3))`
# 判断正常有两个分隔符时是否是合法日期
if [ 2 -eq $p2 -o 2 -eq $p3 ]; then
tt=`date -d "$dt" +"%Y-%m-%d"`
echo $?
else
# 如果不是两个分隔符则按照yyyymmdd进行校验
if [ 8 -eq $len_dt ]; then
tt=`date -d "$dt" +"%Y-%m-%d"`
echo $?
else
echo 1
fi
fi
}

当然,其他格式或时间戳也都是可以校验的,只需对上述内容稍作改动就行~


蚂蚁再小也是肉🥩!


Linux Shell脚本日期校验
http://heibanbai.com.cn/posts/dc382566/
作者
黑伴白
发布于
2022年6月9日
许可协议

“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付