1 基础知识
1.1 认识date的重要参数
1.1.1 查看date的参考文档
使用以下命令查阅参数,
man date
留意“-d”参数,
-d, --date=STRING display time described by STRING, not ‘now’
注:以上大致的意思是,根据字符串显示描述时间(STRING),而非现在时间
1.1.2 查看字符串的解析
更进一步的,我们从手册中查看”STRING”的解析
DATE STRING The --date=STRING is a mostly free format human readable date string such as "Sun, 29 Feb 2004 16:21:42 -0800" or "2004-02-29 16:21:42" or even "next Thursday". A date string may contain items indicating calendar date, time of day, time zone, day of week, relative time, relative date, and numbers. An empty string indicates the begin- ning of the day. The date string format is more complex than is easily documented here but is fully described in the info documentation.
注:
大致的翻译是,STRING格式是人类可读的常见日期字符串格式,如
– Sum, 29
– Feb 2004 16:21:42 -0800
– 2004-02-29 16:21:42
– next Thursday
字符串可以接受的表达方式有,
– 日历日期(calendar date)
– 日期时间(time of date)
– 时区(time zone)
– 周几(day of week)
– 相对时间(relative time)
– 相对日期(relative date)
– 相对数字(relative date)
– 空字符串(表示当天的开始)
– 其他复杂的格式(自己领悟)
2 实践部分
基于本章的目的,要实现日期的加减,我们应当使用相对日期或时间和数字来实现。
2.1 格式化系统的字符串
date "+%Y-%m-%d %H:%M:%S"
格式显示如下:
2018-01-25 13:45:17
注:下面要用到做对比
2.2 使用相对数字
2.2.1 描述一年前后
date "+%Y-%m-%d"; date "+%Y-%m-%d" -d "-1 year"; date "+%Y-%m-%d" -d "+1 year"
显示如下:
2018-01-25 2017-01-25 2019-01-25
注:
– “;”号,该符号将一行命令分隔成多条命令。
– 第一条命令显示当前格式化的年月日
– 第二条命令显示当前格式化的年月日的前一年
– 第三条命令显示当前格式化的年月日的后一年
2.2.2 描述一月前
date "+%Y-%m-%d"; date "+%Y-%m-%d" -d "-1 month"
显示如下:
2018-01-25 2017-12-25
2.2.3 描述一天前
date "+%Y-%m-%d"; date "+%Y-%m-%d" -d "-1 day"
显示如下:
2018-01-25 2018-01-24
注: 描述指定的某天的前一天(本例描述上个月最后一天),可使用如下命令,
date "+%Y-%m-01"; date -d"`date +%Y%m01` -1 day" "+%Y-%m-%d"
显示如下:
2018-01-01 2017-12-31
2.2.4 描述一小时前
date "+%Y-%m-%d %H:%M:%S"; date "+%Y-%m-%d %H:%M:%S" -d "-1 hour"
显示如下:
2018-01-25 13:55:02 2018-01-25 12:55:02
2.2.4 描述一分钟前
date "+%Y-%m-%d %H:%M:%S"; date "+%Y-%m-%d %H:%M:%S" -d "-1 minute"
显示如下:
2018-01-25 13:56:47 2018-01-25 13:55:47
2.3 使用相对日期和时间
2.3.1 描述一年前后
date "+%Y-%m-%d"; date "+%Y-%m-%d" -d "year ago"; date "+%Y-%m-%d" -d "next year"
显示如下:
2018-01-25 2017-01-25 2019-01-25
2.3.2 描述一月前
date "+%Y-%m-%d"; date "+%Y-%m-%d" -d "month ago"
显示如下:
2018-01-25 2017-12-25
注:参考上面,不再一一演示。
没有评论