0

在 Linux 中,有一个非常棒的命令date可以使用如下方式:

# Get some cool date in relation to systems date:
date  -d "last Sunday -7 days"
Sun Sep 15 00:00:00 PDT 2013

# Set systems date:
date --set="2013-03-04"
Mon Mar  4 00:00:00 PST 2013

基本上我希望能够像这样运行这个命令:

date --date="last Sunday -7 days" +%Y-%m-%d
2013-09-15

但不是与今天的系统日期有关,而是与另一个以字符串形式(例如“2013-09-01”)或其他形式的计算生成的某个日期有关。

请帮我弄清楚如何做到这一点。

4

1 回答 1

2

使用函数:

function get_last_day {
    local date=$1 day=$2 format=$3 a b i
    for (( i = 0; i <= 6; ++i )); do
        read -r a b < <(exec date -d "$date - $i days" "+%a $format")
        if [[ $a == "$day" ]]; then
            echo "$b"
            return
        fi
    done
}

get_last_day '2013-09-18' Sun '%Y-%m-%d'

输出:

2013-09-15
于 2013-09-25T19:01:54.007 回答