Linux 中date命令的用法

关于Linux内置命令date的用法,这里主要说一下,它在shell脚本中如何做日期计算和转换的。

格式化输出日期

详细的格式化符号可以用man date找到,这里以年月日来表示

获得当前的日期:

# date +%Y-%m-%d
2014-10-0
2# date "+%Y-%m-%d"
2014-11-02
# date +"%Y-%m-%d"
2014-11-02

上面的不同地方是双引号的位置。

# date -d "1 month ago 2014-10-29" +"%Y-%m-01"
2014-09-01


 

获得昨天的日期:计算前一天,可以用last day, yesterday和1 day ago来获得。

# date -d yesterday '+%Y-%m-%d'
2014-10-29
计算给定日期的前一天
# date --date='last day 2014-09-02' +"%Y-%m-%d"
2014-09-01
# date --date='last day 2014-09-01' +"%Y-%m-%d"
2014-08-31
# date -d '1 day ago 2014-09-31' +"%Y-%m-%d"
date: invalid date “1 day ago 2014-09-31”
# date -d '1 day ago 2014-10-01' +"%Y-%m-%d"
2014-09-30

如果是前几天的话,加不加s都可以,但复数最好加s,语义上讲的通嘛
# date -d '2 day ago 2014-10-01' +"%Y-%m-%d"
2014-09-29
# date -d '2 days ago 2014-10-01' +"%Y-%m-%d"
2014-09-29

但如何给定日期的下一天的日期呢?
# date -d "1 day 2014-10-01" +%Y-%m-%d
2014-10-02
# date -d "3 day 2014-10-01" +%Y-%m-%d
2014-10-04
# date -d "3 days 2014-10-01" +%Y-%m-%d
2014-10-04
就是说,不用ago,也不用after就直接表示从给定日期往后的偏移日期
# date -d "3 months 2014-10-01" +%Y-%m-%d
2015-01-01
# date -d "3 month 2014-10-01" +%Y-%m-%d
2015-01-01
# date -d "1 month 2014-10-01" +%Y-%m-%d
2014-11-01

 

如果已知日期的秒数,如何转换回日期格式?

# date --d="@1223345333"
2008年 10月 07日 星期二 10:08:53 CST

使用Shell的字符串截断函数,区间【)前闭后开

# date -d yesterday '+%Y-%m-%d'
2014-10-29
# dt='2014-10-29'
# echo ${dt:8:10}
29
# echo ${dt:0:7}
2014-10


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值