当前位置:   article > 正文

shell检验日期格式

shell检验日期格式

     我不是码农,我是数据搬运工。年前最后一天上班,在搬数据。从北京IDC机房传数据到杭州IDC机房做分析处理,看了一下之前自己写的shell脚本,发现日期没有校验,感觉有点不爽,然后写了个校验。

     废话不多说:

1.校验YYYYMMDD格式的日期,只允许8位长度。

2.校验YYYY-MM-DD格式的日期,长度随意。

稍加修改,就可以去校验“YYYY-MM-DD HH24:mi:ss”了

#cat   date_test.sh
tt=`date -d "2010-10-111" +"%Y-%m-%d"`
echo $?

tt=`date -d "2010-10-1" +"%Y-%m-%d"`
echo $?

function check_date(){
dt="$1"
len_dt=${#dt}
dt=${dt//-/}
len_dt2=${#dt}
p=`echo $(($len_dt-$len_dt2))`

if [ 2 -eq $p  ]
then
  
    tt=`date -d "$1" +"%Y-%m-%d"`
    echo $?
else
    if [ 8 -eq $len_dt2  ]
    then
         tt=`date -d "$1" +"%Y-%m-%d"`
         echo $?
    else
         echo 1
    fi
fi

}

dt="20110101"
echo -e "\ncheck_date $dt"
check_date "$dt"

dt="201101011"
echo -e "\ncheck_date $dt"
check_date "$dt"

dt="2011-01-01"
echo -e "\ncheck_date $dt"
check_date "$dt"

dt="2011-1-1"
echo -e "\ncheck_date $dt"
check_date "$dt"

dt="2011-01-1"
echo -e "\ncheck_date $dt"
check_date "$dt"

dt="2011-01-01"
echo -e "\ncheck_date $dt"
check_date "$dt"

dt="2011-01-32"
echo -e "\ncheck_date $dt"
check_date "$dt"


dt="20110229"
echo -e "\ncheck_date $dt"
check_date "$dt"

dt="20110228"
echo -e "\ncheck_date $dt"
check_date "$dt"

dt="200002229"
echo -e "\ncheck_date $dt"
check_date "$dt"


dt="1-1-1"
echo -e "\ncheck_date $dt"
check_date "$dt"

dt="22221-1-1"
echo -e "\ncheck_date $dt"
check_date "$dt"

运行结果

#sh   date_test.sh
date: invalid date `2010-10-111'
1
0

check_date 20110101
0

check_date 201101011
1

check_date 2011-01-01
0

check_date 2011-1-1
0

check_date 2011-01-1
0

check_date 2011-01-01
0

check_date 2011-01-32
date: invalid date `2011-01-32'
1

check_date 20110229
date: invalid date `20110229'
1

check_date 20110228
0

check_date 200002229
1

check_date 1-1-1
0

check_date 22221-1-1
0

详细的运行过程

#sh  -x  date_test.sh
++ date -d 2010-10-111 +%Y-%m-%d
date: invalid date `2010-10-111'
+ tt=
+ echo 1
1
++ date -d 2010-10-1 +%Y-%m-%d
+ tt=2010-10-01
+ echo 0
0
+ dt=20110101
+ echo -e '\ncheck_date 20110101'

check_date 20110101
+ check_date 20110101
+ dt=20110101
+ len_dt=8
+ dt=20110101
+ len_dt2=8
++ echo 0
+ p=0
+ '[' 2 -eq 0 ']'
+ '[' 8 -eq 8 ']'
++ date -d 20110101 +%Y-%m-%d
+ tt=2011-01-01
+ echo 0
0
+ dt=201101011
+ echo -e '\ncheck_date 201101011'

check_date 201101011
+ check_date 201101011
+ dt=201101011
+ len_dt=9
+ dt=201101011
+ len_dt2=9
++ echo 0
+ p=0
+ '[' 2 -eq 0 ']'
+ '[' 8 -eq 9 ']'
+ echo 1
1
+ dt=2011-01-01
+ echo -e '\ncheck_date 2011-01-01'

check_date 2011-01-01
+ check_date 2011-01-01
+ dt=2011-01-01
+ len_dt=10
+ dt=20110101
+ len_dt2=8
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 2011-01-01 +%Y-%m-%d
+ tt=2011-01-01
+ echo 0
0
+ dt=2011-1-1
+ echo -e '\ncheck_date 2011-1-1'

check_date 2011-1-1
+ check_date 2011-1-1
+ dt=2011-1-1
+ len_dt=8
+ dt=201111
+ len_dt2=6
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 2011-1-1 +%Y-%m-%d
+ tt=2011-01-01
+ echo 0
0
+ dt=2011-01-1
+ echo -e '\ncheck_date 2011-01-1'

check_date 2011-01-1
+ check_date 2011-01-1
+ dt=2011-01-1
+ len_dt=9
+ dt=2011011
+ len_dt2=7
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 2011-01-1 +%Y-%m-%d
+ tt=2011-01-01
+ echo 0
0
+ dt=2011-01-01
+ echo -e '\ncheck_date 2011-01-01'

check_date 2011-01-01
+ check_date 2011-01-01
+ dt=2011-01-01
+ len_dt=10
+ dt=20110101
+ len_dt2=8
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 2011-01-01 +%Y-%m-%d
+ tt=2011-01-01
+ echo 0
0
+ dt=2011-01-32
+ echo -e '\ncheck_date 2011-01-32'

check_date 2011-01-32
+ check_date 2011-01-32
+ dt=2011-01-32
+ len_dt=10
+ dt=20110132
+ len_dt2=8
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 2011-01-32 +%Y-%m-%d
date: invalid date `2011-01-32'
+ tt=
+ echo 1
1
+ dt=20110229
+ echo -e '\ncheck_date 20110229'

check_date 20110229
+ check_date 20110229
+ dt=20110229
+ len_dt=8
+ dt=20110229
+ len_dt2=8
++ echo 0
+ p=0
+ '[' 2 -eq 0 ']'
+ '[' 8 -eq 8 ']'
++ date -d 20110229 +%Y-%m-%d
date: invalid date `20110229'
+ tt=
+ echo 1
1
+ dt=20110228
+ echo -e '\ncheck_date 20110228'

check_date 20110228
+ check_date 20110228
+ dt=20110228
+ len_dt=8
+ dt=20110228
+ len_dt2=8
++ echo 0
+ p=0
+ '[' 2 -eq 0 ']'
+ '[' 8 -eq 8 ']'
++ date -d 20110228 +%Y-%m-%d
+ tt=2011-02-28
+ echo 0
0
+ dt=200002229
+ echo -e '\ncheck_date 200002229'

check_date 200002229
+ check_date 200002229
+ dt=200002229
+ len_dt=9
+ dt=200002229
+ len_dt2=9
++ echo 0
+ p=0
+ '[' 2 -eq 0 ']'
+ '[' 8 -eq 9 ']'
+ echo 1
1
+ dt=1-1-1
+ echo -e '\ncheck_date 1-1-1'

check_date 1-1-1
+ check_date 1-1-1
+ dt=1-1-1
+ len_dt=5
+ dt=111
+ len_dt2=3
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 1-1-1 +%Y-%m-%d
+ tt=0001-01-01
+ echo 0
0
+ dt=22221-1-1
+ echo -e '\ncheck_date 22221-1-1'

check_date 22221-1-1
+ check_date 22221-1-1
+ dt=22221-1-1
+ len_dt=9
+ dt=2222111
+ len_dt2=7
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 22221-1-1 +%Y-%m-%d
+ tt=22221-01-01
+ echo 0
0



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/914096
推荐阅读
相关标签
  

闽ICP备14008679号