+ -
当前位置:首页 → 问答吧 → 请问如何确定一个月的第一个周未和第二个周未

请问如何确定一个月的第一个周未和第二个周未

时间:2011-01-25

来源:互联网

请问如何确定一个月的第一个周未和第二个周未

我想实现:

if 第一个周六 then
exec 任务一

else 第二个周六 then

exec 任务二
end ;

请各位高手帮忙.

作者: yuantong   发布时间: 2011-01-25

1、是周六,并且日期在1号和7号之间
2、是周六,并且日期在8号和14号之间

作者: ly5066113   发布时间: 2011-01-25

每个月的每一周的周六,时间都不同的,如这个月的第一个周六是1.1

下个月的第一个周六是2.5

作者: yuantong   发布时间: 2011-01-25

我的想法是把之前从月初到目前的星期都打印以下,然后查找周末,数一下,不知道有更好的办法没?

作者: justlooks   发布时间: 2011-01-25

本帖最后由 yinyuemi 于 2011-01-25 15:56 编辑

回复 yuantong


    用date函数,再加上tim兄的限制条件,可以试试。

如 day1=`date | awk '{print $3}' `
day2=`date | awk '{print $1}' `

然后写给if 判断

作者: yinyuemi   发布时间: 2011-01-25

cal 2 2000
   February 2000
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29

作者: cjaizss   发布时间: 2011-01-25

cal 是一个好方法,但不知如何把周六的日期拿出来,并确定周未的顺序

week = `date + %m" "%Y`
cal $week

作者: yuantong   发布时间: 2011-01-25



QUOTE:
cal 2 2000
   February 2000
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
6  7  8  9 10 11 12
13 1 ...
cjaizss 发表于 2011-01-25 15:52




    显然,19和26就是我们想要的
cal 2 2000|awk 'NF==7{B=A;A=$7;}END{print A,B}'

作者: cjaizss   发布时间: 2011-01-25

方法有很多。

gnu date:
得到指定月份的第一个周六:
date -d "$(( (13-$(date +%w -d 2011-2-1))%7 )) day 2011-2-1"

作者: blackold   发布时间: 2011-01-25



QUOTE:
方法有很多。

gnu date:
得到指定月份的第一个周六:
date -d "$(( (13-$(date +%w -d 2011-2-1))%7 )) ...
blackold 发表于 2011-01-25 15:58




    13-  
   %7 语法错语

作者: yuantong   发布时间: 2011-01-25

回复 yuantong


    你的不是gnu date吧?

作者: blackold   发布时间: 2011-01-25

这个也不是我想要的吧

还要当前日期与取出的数是否相等

能不能给一个完整的解决方案,谢

作者: yuantong   发布时间: 2011-01-25

你可以参考cron

作者: blackold   发布时间: 2011-01-25

cron 并不能指定具体那个周未

作者: yuantong   发布时间: 2011-01-25

Tim 早已经告诉你了吧!

以下代码可能在你的环境结果不一样, 我的是bash和gnu date,
请根据你的具体环境来修改:
  1. wd=$(date +%w%d)
  2. if [ $wd -ge 601 -a $wd -le 607 ]; then
  3.     exec 任务一
  4. elif [ $wd -ge 608 -a $wd -le 614  ]; then
  5.     exec 任务二
  6. fi
复制代码

作者: seeLnd   发布时间: 2011-01-25