Linux

如何獲取特定日期

  • July 30, 2020

需要在我的腳本中獲取當月的第一個星期六日期。我可以從下面的命令中獲取上週六的日期

date -d 'last Saturday' +%y%m%d

但無法獲得第一個星期六的日期。甚至嘗試過 date -d 'First Saturday' +%y%m%d 但沒有得到預期的結果。

我的要求是例如 - 在本月(七月) - 第一個星期六日期(200704)

誰能幫我獲得本月的第一個星期六日期

ksh93

$ ksh93 -c 'printf "%(%y%m%d)T\n" "first saturday"'
200704

重擊

縮進的命令只是為了更好地理解。

$ target_day_id=6 # return value of date +%w; Sunday is 0
$ year_month="$(date +%Y-%m)"
$     echo $year_month
2020-07
$ day_id="$(date --date="${year_month}-01" +%w)"
$     echo $day_id
3
$ # July, 1st 2020 was a Wednesday
$ sat1_date="${year_month}-0$(( ( (7+target_day_id-day_id) % 7 ) + 1 ))"
$     echo $sat1_date
2020-07-04
$     # only formatting from now on
$ sat1_date_short="${sat1_date:2}"
$     echo $sat1_date_short
20-07-04
$ sat1_date_short_digits_only="${sat1_date_short//-/}"
$     echo $sat1_date_short_digits_only 
200704

引用自:https://unix.stackexchange.com/questions/600919