Aix ksh计算两个时间差
来源:互联网 发布:苏州文荟人才公寓网络 编辑:程序博客网 时间:2024/04/28 15:29
Ksh中不同于bsh,不支持两个日期直接运算,但可通过以下方法进行计算。
1.先设置一个基础日期[月日最好为1月1日,方便计算],如下设为2010-01-01
2.分别算出两个日期与2010-01-01的秒数差
3.将得到的两个描述差相减即为这两个日期的秒数差
##2月份需要判断平润年
BASEYEAR=2010;BASEMONTH=1;BASEDAY=1;
BASEHOUSR=0;BASEMINUTE=0;BASESECOND=0;
year=0; month=0;
day=0;hour=0;minute=0;second=0;staticsumsec=0
dwly()
{
days=0;i=$BASEYEAR
#deal with the leapyear
while [ $i -lt $year ]
do
#year2days
if [ `expr $i \% 100 ` -eq 0 ]
then
if [ `expr $i \% 400 ` -eq 0 ]
then
days=` expr $days + 366 `
else
days=` expr $days + 365 `
fi
else
if [ `expr $i \% 4 ` -eq 0 ]
then
days=` expr $days + 366 `
else
days=` expr $days + 365 `
fi
fi
i=`expr $i + 1 `
done
#months2days
m=$BASEMONTH
while [ $m -lt $month ]
do
case $m in
1)
days=`expr $days + 31 `
;;
2)
if [ `expr $year \% 100 ` -eq 0 ]
then
if [ `expr $i \% 400 ` -eq 0 ]
then
days=` expr $days + 29 `
else
days=` expr $days + 28 `
fi
else
if [ `expr $i \% 4 ` -eq 0 ]
then
days=` expr $days + 29 `
else
days=` expr $days + 28 `
fi
fi
;;
3)
days=`expr $days + 31 `
;;
4)
days=`expr $days + 30 `
;;
5)
days=`expr $days + 31 `
;;
6)
days=`expr $days + 30 `
;;
7)
days=`expr $days + 31 `
;;
8)
days=`expr $days + 31 `
;;
9)
days=`expr $days + 30 `
;;
10)
days=`expr $days + 31`
;;
11)
days=`expr $days + 30`
;;
12)
days=`expr $days + 31`
;;
esac
m=`expr $m + 1 `
done
#day2days
days=`expr $days + $day`
days=`expr $days - 1`
#days2second
sumsec=`expr $days \* 86400`
tmp_hs=`expr $hour \* 3600`
tmp_ms=`expr $minute \* 60`
sumsec=`expr $sumsec + $tmp_hs`
sumsec=`expr $sumsec + $tmp_ms`
sumsec=`expr $sumsec + $second`
staticsumsec=$sumsec
}
##分别得到年月日小时分钟秒,并求出该时间与2010-01-01的时间差
cat $SAVEDIR/target/control.cfg |while read line
do
tmpstr=`echo $line|awk -F " " '{print $3}'|awk -F "_" '{print $1"_"$2"_"$3" "substr($4,0,2)":"substr($4,2,2)":"substr($4,4,2)}'`
arrivalTime=$tmpstr
year=`echo $tmpstr|cut -d '_' -f1`
month=`echo $tmpstr|cut -d '_' -f2`
day=`echo $tmpstr|cut -d '_' -f3|awk -F " " '{print $1}'`
hms=`echo $tmpstr|awk -F " " '{print $2}'`
hour=`echo $hms|awk -F ":" '{print $1}'`
minute=`echo $hms|awk -F ":" '{print $2}'`
second=`echo $hms|awk -F ":" '{print $3}'`
dwly;#调用上面的函数求出该日期与2010-01-01的秒数差
tmpsec=$sumsec
tmpstr=`date +%Y_%m_%d" "%H:%M:%S `
year=`echo $tmpstr|cut -d '_' -f1`
month=`echo $tmpstr|cut -d '_' -f2`
day=`echo $tmpstr|cut -d '_' -f3|awk -F " " '{print $1}'`
hms=`echo $tmpstr|awk -F " " '{print $2}'`
hour=`echo $hms|awk -F ":" '{print $1}'`
minute=`echo $hms|awk -F ":" '{print $2}'`
second=`echo $hms|awk -F ":" '{print $3}'`
dwly;#调用上面的函数求出该日期与2010-01-01的秒数差
todaysec=$sumsec
dif=`expr $todaysec - $tmpsec`#求出两个时间差的差即为我们要的两个日期的时间差
hours_dif=`expr $dif \/ 3600 `#将秒数差换算为小时差
done
- Aix ksh计算两个时间差
- AIX 计算时间差shell
- C#计算两个时间差
- js计算两个时间差
- Java计算两个时间差
- 计算两个时间差
- 计算两个时间差
- javascript计算两个时间差
- mysql计算两个时间差
- 两个(Unix/AIX下)ksh日志显示和维护脚本
- 计算两个日期的时间差
- js jquery 计算两个时间差
- asp.net 计算两个时间差
- javascript计算两个日期时间差
- php计算两个日期时间差
- java中计算两个时间差
- java中计算两个时间差
- 计算两个long型时间差
- Java面试题目整理
- Multipath 安装和 Openstack Nova + Cinder 配置
- 基于统计方法的分类——主成分分析法
- Python基础——运算
- JS中一些对象的学习和一些函数的相关知识
- Aix ksh计算两个时间差
- Longest Substring Without Repeating Characters
- 名称屏蔽
- Android 系列 5.11使用九片文件 (9-patch)
- javaweb ssh2 第一个网站 半米社区终于开始测试啦
- 动态规划+使用数组
- Python基础——语法
- CSS3制作3D水晶糖果按钮
- Oracle