巧用时区变换计算日期
时间:2008-01-31 来源:phrack2561
#include <stdio.h> |
在Unix系统中我们通常使用date命令来获知当前时间,然而date得到的时间是进行过变换的,除了把秒转换成对应的年月日并累加之外,还需要根据TZ对结果进行修正。每往东或是西偏移一个时区,时间就需要对应的加减一个小时,根据这一点我们可以利用修改时区设置来获得想要的时间或日期。代码如下:
#!/bin/bash # file: getday.sh
if [ $# -ne 1 ] then echo "Usage: ${0##*/} <+/-num>" >&2 exit -1; fi
let day=$1*24 TZ_bak=$TZ TZ="PRC+$day" date +%Y/%m/%d TZ=${TZ_bak} |
例如今天是2008/01/31,那么
getday.sh +3 ---> 2008/01/28
getday.sh -3 ---> 2008/02/03
getday.sh 1000 ---> 2005/05/06
简单十数行代码省去了润年的计算以及每月天数的加减,是不是物超所值呢?