首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

linux实战(六)----获取备份时间----实例解析(2)

linux实战(六)----获取备份时间----实例解析(2)

运用实例

获取今天时期

`date +%Y%m%d`



`date +%F`



$(date +%y%m%d)


命令输出结果如下:
[root@centi-C sh]# date +%Y%m%d
20120727
[root@centi-C sh]# date +%F
2012-07-27
[root@centi-C sh]# date +%y%m%d
120727


获取昨天时期

`date -d yesterday +%Y%m%d`

也可以写成

`date -d -1day +%Y%m%d`


[root@centi-C sh]# date -d yesterday +%Y%m%d
20120726
[root@centi-C sh]# date -d yesterday +%F
2012-07-26
[root@centi-C sh]# date -d -1day +%y%m%d
120726
[root@centi-C sh]# date -d -1day +%Y%m%d
20120726




获取前天日期

`date -d -2day +%Y%m%d`


依次类推比如获取10天前的日期:`date -d -10day +%Y%m%d`
或n天前的 `date -d "n days ago" +%y%m%d`
明天:`date -d tomorrow +%y%m%d`
注意以上中间有空格




获取当前时间戳

date "+%s"     

  #从1970年1月1日00:00:00到当前的秒数




获得相对日期
相对日期相对当前日期而言。d选项还可以告诉您,相对于当前日期若干天的究竟是哪一天,从现在开始的若干天或若干星期以后,或者以前(过去)。通过将这个相对偏移使用引号括起来,作为 -d 选项的参数,就可以完成这项任务。
例如,您需要了解两星期以后的日期。如果您处于 Shell 提示符处,那么可以迅速地得到答案:

$ date -d ’2 weeks’

关于使用该命令,还有其他一些重要的方法:
使用 next/last指令,您可以得到以后的星期几是哪一天:
$ date -d ‘next monday’ (下周一的日期)
$ date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d
$ date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d
$ date -d last-month +%Y%m(上个月是几月)
$ date -d next-month +%Y%m(下个月是几月)
使用 ago 指令,您可以得到过去的日期:
$ date -d ’30 days ago’ (30天前的日期)
您可以使用负数以得到相反的日期:
$ date -d ‘dec 14 -2 weeks’ (相对:dec 14这个日期的两周前的日期)
$ date -d ‘-100 days’ (100天以前的日期)
$ date -d ’50 days’(50天后的日期)





日期转时间戳

date -d | --date= ‘yyyy-mm-dd hh:mi:ss’ +%s

(日期格式为yyyy-mm-dd hh:mi:ss)
如:date --date="2010-12-03" "+%s"   #--date后面接需要转换的日期





时间戳转日期
date -d ’1970-01-01 UTC time seconds’ +”%Y-%m-%d %T %z” (time为时间戳)
如:date --date="1970-01-01 UTC  1291363421 seconds" "+%Y-%m-%d"
date date --date="@1291363421" 竟然也行!!




日期比较大小
(1)比较日期先后最简单的方法就是直接对日期的字符串进行比较。例如:
if [ "2010-12-31" \< "2011-01-01" ]   #注意小于号的转义
if [[ "2010-12-31" < "2011-01-01" ]]  #此时不需要转义
(2)如果觉得(1)的方法不靠谱,那么也可以把日期先转换为时间戳,再进行时间戳的对比。

stamp1=`date --date=$date1 +%s`
stamp2=`date --date=$date2 +%s`
stamp=`expr $stamp2 - $stamp1`
echo $stamp
if [ $stamp -gt 0 ]   #大于0
返回列表