首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP与模板与代码加密/优化 » [求助]一个不大不小的Php问题  


  作者:pulaviva
  注册时间:2004-12-03
  主题/回复:1/0
  积分:405
  等级:★★☆(五级)
  称号:略有小成

  pulaviva@hotmail..
  未提供
  www.

 

 发表:2004-12-03 02:10:47 阅读 2341 次 回复 2 次 得分2  |   字号 字色
[求助]一个不大不小的Php问题
已知: 年份(如2004) 该周是该年的多少周 (如34周)

求: 得到该周的起始和结束 的详细日期 (如2004 11 20 - 2004 11 26)

自己想了几个办法都很笨..想请高手指点
 
 1#楼  
 
  回复人:moodboy
  注册时间:2004-11-22
  主题/回复:24/33
  积分:553
  等级:★★★(六级)
  称号:声名鹊起

   
 1#楼 发表于2004-12-03 17:03:12  评分:1 

在这个论坛中,没人告诉你。
 2#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 2#楼 发表于2004-12-03 19:20:28  评分:1 

这个问题,还真是不大不小。挺费脑筋。想了半天才想出来。
看看我这个方法:
假设我们要求 $year 年 的 第 $week 个周的起止时间。
代码:
----------------------------------------------------------------
<?php
$year="2004";
$week="3";     //假设要求2004年第三个周的起止时间

$a= mktime(0,0,0,"1","1",$year);//取得该年份第一天的unix时间戳
$aa=getdate($a);    
$sh=$aa["wday"];   //看看这一天是星期几
if($sh==0){    //如果1月1日是星期天
$kaishi=$a+24*60*60*(($week-1)*7-6);
}else{        
$kaishi=$a+24*60*60*(($week-1)*7-($sh-1));
}   
$jieshu=$kaishi+6*24*60*60;  //开始时间加6天就是结束时间

$ok1=getdate($kaishi);  //将unix时间戳格式化成时间,并输出
$ok2=getdate($jieshu);
echo $year."年的第".$week."个周从".$ok1["year"]."-".$ok1["mon"]."-".$ok1["mday"]."开始到".$ok2["year"]."-".$ok2["mon"]."-".$ok2["mday"]."结束";

?>
---------------------------------------------------------------
输出结果为:
2004年的第3个周从2004-1-12开始到2004-1-18结束
你查一下机器日历,结果是正确的。

我这个方法有一个特点,就是,如果某年的第一个星期并不是这一年的第一天,比如2004年1月1日是星期三,那么 2004年的第2个周,那么1月6日那个星期一,我把它作为本年的第2个周。 也就是不满一个周,按一个周算得。
如果你不希望这样,可以稍微做一下修改,把判断的地方改成这样:
if($sh==0){    
$kaishi=$a+24*60*60*(($week-1)*7+1);
}else{        
 if($sh==1){
$kaishi=$a+24*60*60*(($week-1)*7)
 else{
$kaishi=$a+24*60*60*(($week-1)*7+(7-$sh+1));
 }


这样就行了。
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.005sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版