如何确定月份的周数

如何确定月份的周数

在 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

相关内容