[root@mytest ~]# date
2020年 04月 28日 星期二 09:03:41 CST
[root@mytest ~]# date -d "last monday"
2020年 04月 27日 星期一 00:00:00 CST
(和我理解的不一样,求教)
date -d "last monday"为什么获取的是本周一的日期
- jiandan23
- 帖子: 86
- 注册时间: 2010-12-17 22:31
- 系统: Mint 19.2
- astolia
- 论坛版主
- 帖子: 6569
- 注册时间: 2008-09-18 13:11
Re: date -d "last monday"为什么获取的是本周一的日期
代码: 全选
last
[lɑ:st]
n. 末尾,最后;上个;鞋楦(做鞋的模型)
adj. 最后的;最近的,最新的;仅剩的;最不可能…的
vi. 持续;维持,够用;持久
vt. 度过,拖过;使维持
adv. 最后地;上次,最近;最后一点
但是:
1、很多人,即使是英语母语的,提到星期几的时候都是以周为单位思考的,所以在说last/next monday都会下意识地略过当前周。
2、翻译成中文,成了“上个星期一”,容易被理解成“上个星期的星期一”
考虑存在到这种混淆,一般会在后面补充this week之类明确是哪一周
代码: 全选
$ date -d "last monday this week"
2020年04月27日 0:00:00
$ date -d "last monday last week"
2020年04月20日 0:00:00
- jiandan23
- 帖子: 86
- 注册时间: 2010-12-17 22:31
- 系统: Mint 19.2
Re: date -d "last monday"为什么获取的是本周一的日期
感谢astolia,道理搞清楚了,不过我这个命令不确定会在星期几执行,所以即使加上“last week”,到下一个周一又会出现问题:
[root@mytest ~]# date -s "2020-05-04"
2020年 05月 04日 星期一 00:00:00 CST
[root@mytest ~]# date
2020年 05月 04日 星期一 00:00:04 CST
[root@mytest ~]# date -d "last monday last week"
2020年 04月 20日 星期一 00:00:00 CST
(我现在用的是当前天往前面减的办法:date --date="-$(($(date +%u)+6)) days" +%F)
[root@mytest ~]# date -s "2020-05-04"
2020年 05月 04日 星期一 00:00:00 CST
[root@mytest ~]# date
2020年 05月 04日 星期一 00:00:04 CST
[root@mytest ~]# date -d "last monday last week"
2020年 04月 20日 星期一 00:00:00 CST
(我现在用的是当前天往前面减的办法:date --date="-$(($(date +%u)+6)) days" +%F)