嗨我想在bash中获取当月的周数,有人知道如何做到这一点吗?我搜索日期选项,注意到周数仅为绝对周数。
WEEK =>当前一周的例如。今天22.05周= 4
我找到了一些选项,但没有选项,这适用于每个月和每个日期有些错误,如果领先0一些,如果月份是偶数。
答案 0 :(得分:0)
这是一个解决方案:
this_month=$(ncal -w | tail -1 | awk '{print NF}')
total_this_month=$(ncal -w | tail -1 | awk '{print $NF}')
this_week=$(date +%W)
this_monthweek=$(($this_week - $total_this_month + $this_month))
echo -e "today $(date +%d.%m) WEEK=$this_monthweek"
希望,这就是你要找的东西。
修改强>
没有ncal的解决方案
this_month=$(date -d "20170501" +%V)
end_this_month=$(date -d "20170531" +%V)
total_this_month=$(($end_this_month - $this_month + 1))
this_week=$(date +%W)
this_monthweek=$(($this_week - $end_this_month + $total_this_month))
echo -e "today $(date +%d.%m) WEEK=$this_monthweek"
答案 1 :(得分:0)
我想出了什么,但我不确定它是否适用于一年中的每个月和每周,而且我不知道如何操纵日期来测试它
current_week=$(date +"%V")
last_of_month=$(date --date "-`date +%d` days +1 month" +%Y-%m-%d)
last_of_month_week=$(date --date="$last_of_month" +"%V")
WEEK=$(($current_week - $test + 5))
答案 2 :(得分:0)
我发现此解决方案可与AIX一起使用,但可在任何Unix上使用
#!/bin/bash
year=$(date +'%Y')
month=$(date +'%m')
day=$(date +'%e' | tr -d '[:blank:]')
WEEKNUM=$(cal ${month} ${year} | grep -v "[[:alpha:]]" | grep -nw ${day} | cut -f1 -d':')
echo "WEEKNUM ${WEEKNUM}"
在Linux上,您可以根据需要切换一周的第一天
在AIX上,一周的第一天由语言环境继承