SHELL下date命令的用法

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′。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值