bash获取当月的周数

时间:2017-05-22 07:55:19

标签: bash

嗨我想在bash中获取当月的周数,有人知道如何做到这一点吗?我搜索日期选项,注意到周数仅为绝对周数。

WEEK =>当前一周的例如。今天22.05周= 4

我找到了一些选项,但没有选项,这适用于每个月和每个日期有些错误,如果领先0一些,如果月份是偶数。

3 个答案:

答案 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上,一周的第一天由语言环境继承