linux shell脚本中用到的那些时间函数

将linux shell脚本中用到的一些时间相关函数记录在这里:

1. 得到指定格式的字符串时间戳

echo `date +'%Y%m%d%H%M%S'`
echo `date -d "3 day ago" +'%Y%m%d%H%M%S'`
echo `date +"%w"`
echo `date -d "1 day ago" +'%w'`

2. 简单判断字符串格式时间是否合法,没有判断闰年的情况

## check date format: 20121212040100
checkDate(){
    _tmpStr=`echo "$1" | grep '<&#91;1-9&#93;{1}&#91;0-9&#93;{13}>'`
    [ -z "$_tmpStr" ] &amp;&amp; return 1

    M=`expr substr $1 5 2`
    D=`expr substr $1 7 2`
    [ "$M" -lt 1 -o "$M" -gt 12 ] &amp;&amp; return 1 
    [ "$D" -lt 1 -o "$D" -gt 31 ] &amp;&amp; return 1 

    return 0
}

3. 转换时间戳格式从字符串格式到其他格式

## convert format from 20100624101010 to 2010-06-24 10:10:10 #####
function timeFormatConvert()
{
    _newTime=`echo $1 | cut -c1-4`
    _newTime=${_newTime}"-"
    _newTime=${_newTime}"`echo $1 | cut -c5-6`"
    _newTime=${_newTime}"-"
    _newTime=${_newTime}"`echo $1 | cut -c7-8`"
    _newTime=${_newTime}" "
    _newTime=${_newTime}"`echo $1 | cut -c9-10`"
    _newTime=${_newTime}":"
    _newTime=${_newTime}"`echo $1 | cut -c11-12`"
    _newTime=${_newTime}":"
    _newTime=${_newTime}"`echo $1 | cut -c13-14`"

    echo ${_newTime};    
}

4. 求两个时间之差,即时间间隔

## interval time of two time
timeSpan()
{
    _startTime=`timeFormatConvert $1`;
    _endTime=`timeFormatConvert $2`;
    _startSecond=`date -d "${_startTime}" +%s`
    _endSecond=`date -d "${_endTime}" +%s`

    let _timeRange=${_endSecond}-${_startSecond}
    if [ ${_timeRange} -lt 0 ];then
        echo 0
    else
        echo ${_timeRange}
    fi
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注