如何根据今天获取 3 月 2 日的特定日期(bash)

问题描述 投票:0回答:2

要求是在任何一年的 3 月最后 2 日进行 CI 流程,这意味着:

今天是:2024 年 2 月 23 日 - 3 月最后 2 日将是 02/03/2023

今天是:2024 年 3 月 23 日 - 3 月最后 2 日将是 02/03/2024(当年)

我如何在 CI 过程中自动化它(使用

date
命令)?

linux bash date
2个回答
1
投票

就这么简单:

samveen@zero2w:~ $ date -d 'march 2 last year'
Thu  2 Mar 00:00:00 IST 2023

根据需要提供输出格式参数。

编辑:正如评论中所指出的,这仅适用于 GNU 日期(即 Linux 和类似环境(即 Ubuntu WSL)。


0
投票

在 Bash 上,如果您只有 POSIX 或 BSD

date
,您可以执行以下操作:

#!/bin/bash

this_year=$(date "+%Y")
last_year=$(( this_year-1 ))
month=$(date "+%m")
day=$(date "+%d")

if [[ "${this_year}${month}${day}" > "${this_year}0302" ]] then
    echo "${this_year}0302"
else
    echo "${last_year}0302"
fi

这是有效的,因为

YYYYMMDD
的格式可以正确地按照与实际日期相对应的字典顺序对表示日期的字符串进行排序。这由 ISO 8601 标准代表。

© www.soinside.com 2019 - 2024. All rights reserved.