月末が週末かどうか確認するには?

月末が週末かどうか確認するには?

週末に月末の日付を確認してインポートする必要がありますが、誰でも助けることができますか?

答え1

GNUの使用date:

[[ $(date -d "-$(date +%d)days month" +%u) = [67] ]] && echo 'Month-End falls on weekend'

一般的に言えば、date -d "-$(date +%d)days month"今月の日数を差し引いて月の結果を加えることを意味します。

date -d'-XXX days + 1month'

XXX私たちは日数を計算して取得しますdate +%d


テスト2021年1月週末終了:

[[ $(date -d "-$(date +%d)days 3month" +%u) = [67] ]] && echo 'Month-End falls on weekend'

~から承認する%uは曜日のFORMAT制御です(1..7)。月曜日に。そのため、お住まいの地域の週末のスケジュールに従って上記の6番と7番を変更してください。

答え2

シェルを含むksh93:

month='this month'
month='2020-11'
month='November 2020'
if [[ ${ printf '%(%u)T' "last day in $month"; } = [67] ]]; then
  print "Last day in $month falls on a weekend"
fi

シェルを使用して、zsh来月の最初の日が日曜日か月曜日かを確認します。

zmodload zsh/datetime

strftime -s month %Y-%m # this month
month=2020-11           # given month

last_day_on_a_weekend() {
  local TZ=UTC0 y m t

  y=${1%-*} m=${1#*-}
  if (( ++m > 12 )); then
    (( y++ )); m=1
  fi
    
  strftime -rs t %Y-%m-%d $y-$m-1
  strftime -s t %u $t

  [[ $t = [71] ]]
}

if last_day_on_a_weekend $month; then
  print "Last day in $month falls on a weekend"
fi

関連情報