正确获取“上周一”的日期

时间:2018-09-04 16:48:36

标签: bash date

我知道你们中的某些人在想什么:“ That's easy, just use this

date -dlast-monday +%Y%m%d

但是实际上不是最后星期一。那是最近的星期一,可能用英语描述为“过去的星期一”。

“上周一”通常是指上周的星期一。 date有什么捷径可以得知说英语的人在说“上周一”时的意思?

例如,今天是我撰写本文时的星期二。日期是2018-09-04。我想得到2018-08-27。

((至少有可能假设 可能有一些母语不同的母语人士,但是无论您以哪种方式理解我的问题,即使您使用表达“最后*天”。)

2 个答案:

答案 0 :(得分:2)

$ date +%F
2018-09-04
$ date -d "1 week ago last monday" +%F
2018-08-27

当然,类似 的声音应该在上一个星期一的前一周,即2018-08-20。听起来有些不合逻辑而又有些逻辑的事情可能是

$ date -d "last monday -1 week" +%F
2018-08-27

答案 1 :(得分:1)

我认为这可能有助于获取上周一的日期:

date -d"last-sunday - 6 days"

在macOS上,您可以使用Homebrew安装GNU实用程序并使用

gdate -d"last-sunday - 6 days"

至少在我的GNU版本中,日期last-sunday将返回当前日期(如果当前是星期日)。 This may have changed in newer versions.