喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
     
标题: [问题] 问一算法:如何根据月份得出该月每一周的开始结束时间  
 
w78z007
中级会员
Rank: 3Rank: 3



UID 78887
精华 0
积分 255
帖子 123
金钱 255 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-8-23
状态 离线
[广告]: q m
问一算法:如何根据月份得出该月每一周的开始结束时间

如题(以每个月的周一开始算第一周)

例子:比如2008年3月
得出如下结果:

3月份第一周3.3~3.9
3月份第二周3.10~3.16
3月份第三周3.17~3.23
3月份第四周3.24~3.30
3月份第五周3.31~4.6
2008-3-18 06:14 PM#1
查看资料  发短消息  顶部
 
songlv (超级版主)
论坛元老
Rank: 8Rank: 8


UID 73828
精华 0
积分 3021
帖子 693
金钱 3017 喜悦币
威望 0
人脉 4
阅读权限 90
注册 2006-5-22
状态 在线
[推荐阅读] 求助:div的空行问题
这玩意真他妈难写!对付一下吧

<?php
function getWeek($date){
    
$d=strtotime($date."-10");
    
$f=(date('j',$d)-date('N',$d)+1)%7;
    
$end=date('t',$d);
    
$arr=array();
    for(
$i=$f;$i<=$end;$i+=7){
        if(
$i+6<=$end){
            
$arr[]=array('s'=>$date."-".$i,'e'=>$date."-".($i+6) );
        }else{
            
$arr[]=array('s'=>$date."-".$i,'e'=>date("Y-m",$d+2592000)."-".($i+6-$end));
        }
    }
    return 
$arr;

}

print_r(getWeek('2008-03'));
?>
输出结果如下:

<?php
Array
(
    [
0] => Array
        (
            [
s] => 2008-03-3
            
[e] => 2008-03-9
        
)

    [
1] => Array
        (
            [
s] => 2008-03-10
            
[e] => 2008-03-16
        
)

    [
2] => Array
        (
            [
s] => 2008-03-17
            
[e] => 2008-03-23
        
)

    [
3] => Array
        (
            [
s] => 2008-03-24
            
[e] => 2008-03-30
        
)

    [
4] => Array
        (
            [
s] => 2008-03-31
            
[e] => 2008-04-6
        
)

)
?>




不要跑  不要玩   不要看  不要  
2008-3-18 06:55 PM#2
查看资料  访问主页  Blog  发短消息  顶部
 
漠北怪叟
金牌会员
Rank: 6Rank: 6



UID 70640
精华 0
积分 2374
帖子 393
金钱 2374 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2006-3-29
状态 离线
[推荐阅读] 2年经验,到PHPX求个职。
楼上的代码可以精简为
<?
function getWeek($ym){

        $startday=strtotime($ym."-1");
        $arr=array();
        for ($i=1;$i<=4;$i++) {
                $startday=strtotime("next monday",$startday);
                $arr[]=array(date("y-m-d",$startday),date("y-m-d",strtotime("next sunday",$startday)));
        }
        return $arr;
}
?>
print_r(getWeek("2008-3"));

Array
(
    [0] => Array
        (
            [0] => 08-03-03
            [1] => 08-03-09
        )

    [1] => Array
        (
            [0] => 08-03-10
            [1] => 08-03-16
        )

    [2] => Array
        (
            [0] => 08-03-17
            [1] => 08-03-23
        )

    [3] => Array
        (
            [0] => 08-03-24
            [1] => 08-03-30
        )

)




我的博客:http://hjc73.space.mywallop.cn,换窝了,http://my.haokan123.com/?104 自己开发的博客自己撑~
2008-3-19 12:08 PM#3
查看资料  Blog  发短消息  顶部
 
phphp
版主
Rank: 7Rank: 7Rank: 7
加班一族


UID 65188
精华 1
积分 184
帖子 3007
金钱 173 喜悦币
威望 10
人脉 1
阅读权限 100
注册 2005-7-20
来自 北京市海淀区
状态 离线
[推荐阅读] 如何用PHP编程实现数据库备份
86400*7



书到用时方恨少, 事非经过不知难
2008-3-19 12:13 PM#4
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
songlv (超级版主)
论坛元老
Rank: 8Rank: 8


UID 73828
精华 0
积分 3021
帖子 693
金钱 3017 喜悦币
威望 0
人脉 4
阅读权限 90
注册 2006-5-22
状态 在线
[推荐阅读] oracle中如何删除记录从10条到20条?急等


QUOTE:
原帖由 漠北怪叟 于 2008-3-19 12:08 PM 发表
楼上的代码可以精简为
<?
function getWeek($ym){

        $startday=strtotime($ym."-1");
        $arr=array();
        for ($i=1;$i<=4;$i++) {
                $startday=strtotime("next monday",$startda ...
你写的不对,哈哈 你怎么知道每月就是4周呢? 还有5周的情况,而且你输出的结果是copy我的,不是你运行的




不要跑  不要玩   不要看  不要  
2008-3-19 02:53 PM#5
查看资料  访问主页  Blog  发短消息  顶部
 
水清无鱼
注册会员
Rank: 2
初级会员



UID 30292
精华 0
积分 182
帖子 489
金钱 182 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2004-7-23
来自 北京
状态 离线
[推荐阅读] php求职(找一个好公司当作我的家!—)广州、东莞、深圳方向


<?php
function gettime($aa){
    
$time=strtotime($aa);
    
$time1=(date('w',$time)=='1')?$time:strtotime('next Monday',$time);
    
$time2=strtotime('+1 months',$time1);
    
$bb=array();
    for(
$i=1;$i<6;$i++){
        
$bb[$i]['start']=date('m-d',$time1);
        
$time1=$time1+86400*6;
        
$bb[$i]['end']=date('m-d',$time1);
        
$time1=$time1+86400;
        if(
$time1>=$time2){break;}
    }
    return 
$bb;
}
print_r(gettime('2008-03-01'));
?>
对刚才犯的错误深表遗憾~

[ 本帖最后由 水清无鱼 于 2008-3-19 03:32 PM 编辑 ]




为地震中的遇难者、受伤者、救援者、捐献者祝福……
2008-3-19 02:58 PM#6
查看资料  访问主页  发短消息  QQ  顶部
 
songlv (超级版主)
论坛元老
Rank: 8Rank: 8


UID 73828
精华 0
积分 3021
帖子 693
金钱 3017 喜悦币
威望 0
人脉 4
阅读权限 90
注册 2006-5-22
状态 在线
[推荐阅读] 一对多关系做一条记录查出


QUOTE:
原帖由 水清无鱼 于 2008-3-19 02:58 PM 发表
function gettime($aa){
$time1=strtotime($aa);
$time2=strtotime('+1 months',$time1);
$bb=array();
for($i=1;$i<6;$i++){
$bb=date('m-d',$time1);
$time1=$time1+86400*7;
$bb=date('m-d',$time1) ...
3月1号貌似不是周一....




不要跑  不要玩   不要看  不要  
2008-3-19 03:03 PM#7
查看资料  访问主页  Blog  发短消息  顶部
 
漠北怪叟
金牌会员
Rank: 6Rank: 6



UID 70640
精华 0
积分 2374
帖子 393
金钱 2374 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2006-3-29
状态 离线
[推荐阅读] 关于操作系统兼容utf8多语言问题


QUOTE:
原帖由 songlv 于 2008-3-19 02:53 PM 发表


你写的不对,哈哈 你怎么知道每月就是4周呢? 还有5周的情况,而且你输出的结果是copy我的,不是你运行的
写成5就可以了....


 附件: 您所在的用户组无法下载或查看附件



我的博客:http://hjc73.space.mywallop.cn,换窝了,http://my.haokan123.com/?104 自己开发的博客自己撑~
2008-3-20 12:59 PM#8
查看资料  Blog  发短消息  顶部
 
songlv (超级版主)
论坛元老
Rank: 8Rank: 8


UID 73828
精华 0
积分 3021
帖子 693
金钱 3017 喜悦币
威望 0
人脉 4
阅读权限 90
注册 2006-5-22
状态 在线
[推荐阅读] 怎么没人讨论国家大事


QUOTE:
原帖由 漠北怪叟 于 2008-3-20 12:59 PM 发表


写成5就可以了....
你又怎么知道每月一定是5周阿? 还有4周的情况呢  比如  print_r(getWeek("2008-4")); 都溢出了




不要跑  不要玩   不要看  不要  
2008-3-20 01:08 PM#9
查看资料  访问主页  Blog  发短消息  顶部
 
songlv (超级版主)
论坛元老
Rank: 8Rank: 8


UID 73828
精华 0
积分 3021
帖子 693
金钱 3017 喜悦币
威望 0
人脉 4
阅读权限 90
注册 2006-5-22
状态 在线
[推荐阅读] KAO让我笑了半个小时


QUOTE:
原帖由 漠北怪叟 于 2008-3-20 12:59 PM 发表


写成5就可以了....
改来改去发现改的比我的还复杂吧?哈哈




不要跑  不要玩   不要看  不要  
2008-3-20 01:09 PM#10
查看资料  访问主页  Blog  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.030306 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP