在 Linux CLI 上,有没有办法获取月份的周数?也许还有另一种方法可以用一个简单的(如date
)命令来获取它?假设第 1 天到第 7 天是第一周,第 8 天到第 14 天是第二周,依此类推。
答案1
该date
命令无法在内部执行此操作,因此您需要一些外部算法。
echo $((($(date +%-d)-1)/7+1))
编辑:在 % 和 d 之间添加一个减号
答案2
你可以使用这个:
星期一 第一周的日子
WEEKNUMBER=$(( 1 + $(date +%V) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%V) ))
周日 第一个星期天
WEEKNUMBER=$(( 1 + $(date +%U) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%U) ))
答案3
尝试这个:
d=`date +%d` ; m=`date +%m` ; y=`date +%Y` ; cal $m $y | sed -n "3,$ p" | sed -n "/$d/{=;q;}"
答案4
如果你接受外部工具,请尝试日期工具。它有月内发生日期的概念,即 2012 年 4 月 27 日是 2012 年 4 月的第 4 个星期五,这恰好与您的周定义相吻合。要获取该数字,请使用:
dconv 2012-04-27 -f %c
=>
04
%c
(计数)是月份内发生的格式说明符。或者更酷的是尝试
dconv today -f '%cth %a in %b %Y'
=>
1st Wed in Sep 2012