SHELL下date命令的用法
詹兴斌 , 2012/10/13 22:46 ,
默认分类 ,
评论(0) ,
阅读(714) , Via 本站原创
| |
引用地址:
注意: 该地址仅在今日23:59:59之前有效
date命令如何获得上星期的日期?
#date -d “-1 week” “+%Y%m%d %A”
举一反三:date命令获得前天,昨天,明天,后天,上个月,下个月的日期
date -d “-2 day” “+%Y%m%d %A” 或 date –date=”2 days ago” “+%Y%m%d %A”
date -d “-1 day” “+%Y%m%d %A” 或 date –date=”1 day ago” “+%Y%m%d %A”
date -d “1 day” “+%Y%m%d %A”
date -d “2 day” “+%Y%m%d %A”
date -d “-1 month” “+%Y%m%d %A”
date -d “1 month” “+%Y%m%d %A”
还有其他用法:
date +%s 可以得到UNIX的时间戳;
#vi utc.sh
————————————————————————————–
#!/bin/sh
date -d ’1970-01-01 UTC ‘$1′ seconds’ +”%Y-%m-%d %T”
————————————————————————————–
#utc 1176736543
2007-04-16 23:15:43
可以把UNIX时间戳转换成当前系统时间
另外要注意下日期字串中的相对项问题:
比如今天是08年3月30日,date -d “last month” +%Y%m%d得到的结果会显示为20080301,因为一个月前,即2月30日是无效的。
Relative items 向前或向后调整指定日期(如不指出日期为当前日期)。相对项的效果是累积的。这里有一些例子: examples:
1 year
1 year ago
3 years
2 days
时间的单位可以用字串 `year’ 或 `month’ 替换,表示移动整年或整月。有一些模糊的单位,像 years 和 months 时间段并不一致。精确的单位有 `fortnight’ 表示 14 天,`week’ 是 7 天,`day’ 是 24 小时,`hour’ 是 60 分钟, `minute’ 或 `min’ 是 60 秒,`second’ 或 `sec’ 是一秒。单位后面可以有后缀 `s’,但被忽略。
时间单位前面可以跟乘数,它是一个符号数。没有符号的数字认为是正数。没有给出乘数隐含为 1。相对时间后面的 `ago’ 字串等于乘数值为-1。
字串 `tomorrow’ 值为将来的一天(等于 `day’),字串 `yesterday’ 值为过去的一天(等于 `day ago’)。
字串 `now’ 或 `today’ 相对项等同于用零值替代,如果没有被前面项目修改,这些字串代表当前时间。它们也可以用来强调其他项,如 `12:00 today’。字串 `this’ 也代表零值,但常用于 `this thursday’ 这样的日期字串里面。
当相对项让日期跨越时钟调整边界时,典型的例子是夏时制,日期和时间的结果也要相应地调节。
模糊的单位会另相对项出现问题。例如,`2003-07-31 -1 month’ 可以等于 2003-07-01,这是因为 2003-06-31 是一个无效的日期。为了更可靠地确定上一个月,你可以询问当前月十五号的上一个月,例如:
$ date -R
Thu, 31 Jul 2003 13:02:39 -0700
$ date –date=’-1 month’ +’Last month was %B?’
Last month was July?
$ date –date=”$(date +%Y-%m-15) -1 month” +’Last month was %B!’
Last month was June!
还有,要小心处理夏令时闰年日期和时间的改变。一些情形下它们增加或减少 24 小时,所以开始日历计算前,最好先将 TZ 环境变量设成 `UTC0′。
阅读(762) | 评论(0) | 转发(0) |