在获取两个时间之间的差值时,需要考虑很多问题,如闰年、月份中不同的天数等。然而如果我们能够确定两个时间点之间天数的差值,那么再计算时分秒的差值时就非常简单了。在系统提供的C语言函数中,获取的时间值是从1970年1月1日0点到当前时间所流经的秒数,如果我们基于此计算两个时间之间天数的差值,将会大大简化我们的计算公式
/> cat > test6.sh
declare -a DATE=(`date +"%S %M %k %d %m %Y"`)
epoch_days=719591
year=${DATE[5]}
month=${DATE[4]}
day=${DATE[3]}
hour=${DATE[2]}
minute=${DATE[1]}
second=${DATE[0]}
if [ $month -gt 2 ]; then
month=$((month+1))
else
month=$((month+13))
year=$((year-1))
fi
today_days=$(((year*365)+(year/4)-(year/100)+(year/400)+(month*306001/10000)+day))
days_since_epoch=$((today_days-epoch_days))
echo $days_since_epoch
seconds_since_epoch=$(((days_since_epoch*86400)+(hour*3600)+(minute*60)+second))
echo $seconds_since_epoch
CTRL+D
/> . ./test6.sh
15310
1322829080
需要说明的是,推荐将该脚本的内容放到一个函数中,以便于我们今后计算类似的时间数据时使用。