如何检查月末是否是周末?

如何检查月末是否是周末?

我需要检查并获取周末的月末日期,有人可以帮忙吗

答案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); 1 是周一。因此,请根据您所在地区的周末日历更改上面的 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

使用zshshell 检查下个月的第一天是星期日还是星期一:

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

相关内容