测试或运维人员平时写脚本时,经常会遇到需要计算日期或者时间。本文总结了几种便捷的计算日期和时间的方式,读者可根据需求和使用场景,选择相应的方式。
1. 利用时区计算前N天时间(需要知道本地时区,东半球时区为负,西半球时区为正)(Unix、Linux均可用)
例:本地时区为东八区,计算三天前的时间
#N=3
#var=`expr -8 + 24 \* $N`
#echo `TZ=GMT+$var date +"%Y-%m-%d %H:%M:%S"`
2023-08-09 12:19:02
2. 利用时间戳计算时间(Linux可用,Unix中date命令没有-d选项)
例:计算三天前的时间
#nowstamp=`date +%s`
#N=3
#targetstamp=`expr $nowstamp - 86400 \* $N`
#date -d @$targetstamp
Fri Aug 9 14:37:30 CST 2023
3. 使用awk命令中的时间函数(Linux可用,Unix中AWK命令没有内置时间函数)
例:计算三天前的时间
# awk -v N=3 'BEGIN{nowstamp=systime();target=nowstamp-86400*N;print "now="strftime("%Y-%m-%d %H:%M:%S",nowstamp),"3daybefore="strftime("%Y-%m-%d %H:%M:%S",target);}'
now=2023-08-12 14:49:31 3daybefore=2023-08-09 14:49:31