![552c54ee8f185f456a5210407463719e.png](https://img-blog.csdnimg.cn/img_convert/552c54ee8f185f456a5210407463719e.png)
1 神奇的语义化查询
Date命令的语义化查询,真是教人爱不释手。
查询明天的此时此刻的四种方法
$ date -d 'tomorrow' # 等价于 date --date='tomorrow'Sat 13 Jun 2020 05:15:25 PM CST$ date -d '1 day' # 等价于 date --date='1 day'Sat 13 Jun 2020 05:15:36 PM CST$ date -d '+1 day'Sat 13 Jun 2020 05:18:05 PM CST$ date -d 'next day'Sat 13 Jun 2020 05:25:16 PM CST
短选项 -d 是长选项--date=string的简写形式。
查询昨天的此时此刻的四种方法
$ date -d 'yesterday'Thu 11 Jun 2020 05:18:32 PM CST$ date -d '1 days ago'Thu 11 Jun 2020 05:18:39 PM CST$ date -d '-1 days'Thu 11 Jun 2020 05:18:47 PM CST$ date -d 'last day'Thu 11 Jun 2020 05:25:32 PM CST
查询去年的上个月的此时此刻的三种方法
$ date -d 'last month last year'Sun 12 May 2019 05:19:52 PM CST$ date -d '1 month ago 1 year ago'Sun 12 May 2019 05:22:17 PM CST$ date -d '-1 month -1 year'Sun 12 May 2019 05:22:39 PM CST
注意 `date -d '-1 month -1 year`这种写法,数字前面有减号。
查询星期的方法的三种方法
$ date -d 'last Friday' # 上周五Fri 05 Jun 2020 12:00:00 AM CST$ date -d 'next friday' # 下周五Fri 19 Jun 2020 12:00:00 AM CST$ date -d 'next sun' # 下周日Sun 14 Jun 2020 12:00:00 AM CST
星期可以全称,可以简称、,另外不区分大小写。
查询具体的日期
比如想知道1970-01-01是周几?1949-10-01是周几?
$ date -d 'Jan 01 1970'Thu 01 Jan 1970 12:00:00 AM CST$ date -d '1949/10/01'Sat 01 Oct 1949 12:00:00 AM CST
2 格式化时间输出
我们在前文中阐述了7秒钟完全记住25个时间格式的方法。
总结的表格如下:
![42700e2920fe6324dee6f8c66f2de1a2.png](https://img-blog.csdnimg.cn/img_convert/42700e2920fe6324dee6f8c66f2de1a2.png)
Date 命令默认输出C语言的时间格式。
$ dateFri 12 Jun 2020 05:39:41 PM CST$ date '+%c'Fri 12 Jun 2020 05:39:27 PM CST
我们将未来的某个日期转换成自定义的时间格式
$ date -d '15 days 1 month 1 year' ' +%A %Y-%m-%d %H:%M:%S Week-%V Day-%j TZ-%Z'Tuesday 2021-07-27 17:46:31 Week-30 Day-208 TZ-CST
输出了一年零一个月又15天后的时间戳。
3 指定时区
打印当前的UTC时间
$ date -uFri 12 Jun 2020 10:34:26 AM UTC
我们查看系统的时区文件
$ ls /usr/share/zoneinfo/America/ | nl |tail 135 Thunder_Bay 136 Tijuana 137 Toronto 138 Tortola 139 Vancouver 140 Virgin 141 Whitehorse 142 Winnipeg 143 Yakutat 144 Yellowknife
显示当前的美东时间
$ TZ="America/New_York" dateFri 12 Jun 2020 06:50:42 AM EDT
4 Epoch 时间
Epoch时刻是Unix以1970-01-01 00:00:00 UTC为计时的起点。
查看epoch-time到此时此刻经过了多少秒?
$ date '+%s'1591959529
也可以反向查询
$ date -u -d @10Thu 01 Jan 1970 12:00:10 AM UTC$ date -d @$(date '+%s')Fri 12 Jun 2020 07:02:47 PM CST
epoch-time最好用的一点是用来测量成勋的运行时间
start=$(date +%s)# run some programsend=$(date +%s)elapsed=$(( end - start ))
5 设置系统时间
我们还能以管理员权限重置系统时间。
date --set="20200618 00:00"
或者查看某个文件的最新修改时间
$ date -r linux-tutorial-2.org Tue 26 May 2020 08:34:16 AM CST
附录
7秒钟记住C++、Java、Python等语言的25种时间格式
![e1d8ec546ddb631a7756022d917dc997.png](https://img-blog.csdnimg.cn/img_convert/e1d8ec546ddb631a7756022d917dc997.png)