使用gnu date来获取各种时间

由于运营需求,我经常在工作中需要写各种脚本来获取不同的时间,而我又不怎么喜欢使用mysql自带的时间函数,总觉得gnu date更强大一点,万全可以拼凑出我需要的时间格式。

比如要获取昨天的日期

 date -d -1days +%F 

这样一个简单的命令就可以获取昨天的日期,当然也可以随便之前之后多少天,而且我也不需要考虑闰月啊等等。

有时候运营想知道上周总的数据。那我们就寻要获取上周一到上周日的时间,那其实很简单

 date -d 'last mon' +%F 

也可以写全为,因为有时候你要写上个月就要写全为last month

 date -d'last monday' +%F 

那上周日很容易就是

 date -d 'last sunday' +%F 

那要取上个月呢?

 date -d 'last month' +%Y-%m 

取上一年

 date -d 'last year' +%Y 

大家也许都看到了我这里主要用的就是-d参数
在man date里关于-d的解释是这样的

 -d, --date=STRING 显示由 STRING 指定的时间, 而不是当前时间 

那这里的STRING到底有哪些选择呢?

查了下官方文档http://www.gnu.org/software/coreutils/manual/html_node/Examples-of-date.html

发现主要有以下几种选择,一个是day, week, month, year这些选择。 另外一个是周一到周日的选择。
同时它还支持这几种条件的合集,比如,我要知道三周后多1天是几号:

 date -d '3 week 1 day' 

Best regards
Timo Seven

()

Linux System Admin & MySQL DBA