php语言 计算每个月有几周及每周的起始时间 求程序实现的代码

php语言 计算每个月有几周及每周的起始时间 求程序实现的代码,第1张

function get_weekinfo($month){

$weekinfo = array();

$end_date = date('d',strtotime($month' +1 month -1 day'));

for ($i=1; $i <$end_date ; $i=$i+7) { 

$w = date('N',strtotime($month'-'$i));

$weekinfo[] = array(date('Y-m-d',strtotime($month'-'$i' -'($w-1)' days')),date('Y-m-d',strtotime($month'-'$i' +'(7-$w)' days')));

}

return $weekinfo;

}

print_r(get_weekinfo('2013-11'));

//执行结果

Array    

(    

   [0] => Array    

       (    

           [0] => 2013-11-25    

           [1] => 2013-12-01    

       )    

   [1] => Array    

       (    

           [0] => 2013-12-02    

           [1] => 2013-12-08    

       )    

   [2] => Array    

       (    

           [0] => 2013-12-09    

           [1] => 2013-12-15    

       )    

   [3] => Array    

       (    

           [0] => 2013-12-16    

           [1] => 2013-12-22    

       )    

   [4] => Array    

       (    

           [0] => 2013-12-23    

           [1] => 2013-12-29    

       )    

)

<php

$friday = strtotime("Friday");//本周五开始时间

$lastFri = strtotime("last Friday");//上周五开始时间  或者$friday-864007

$nextFri = strtotime("next Friday");//下周五开始时间  或者$friday+864007 注意一下:下周五这个有时会出问题,比如现在还不到周五,这样得到的下周五的时间会和本周五一样。

//如果需要某天截止时间可以在这一天的开始时间加上86400  也就是1天

echo "本周五开始时间是:"date("Y-m-d H:i:s",$friday)"<br />";

echo "上周五开始时间是:"date("Y-m-d H:i:s",$lastFri)"<br />";

echo "下周五开始时间是:"date("Y-m-d H:i:s",$nextFri)"<br />";

希望我的回答对您有所帮助~~

复制代码

代码如下:

echo

date("Ymd",strtotime("now")),

"\n";

echo

date("Ymd",strtotime("-1

week

Monday")),

"\n";

echo

date("Ymd",strtotime("-1

week

Sunday")),

"\n";

echo

date("Ymd",strtotime("+0

week

Monday")),

"\n";

echo

date("Ymd",strtotime("+0

week

Sunday")),

"\n";

//date('n')

第几个月

//date("w")

本周周几

//date("t")

本月天数

echo

'<br>上周:<br>';

echo

date("Y-m-d

H:i:s",mktime(0,

0

,

0,date("m"),date("d")-date("w")+1-7,date("Y"))),"\n";

echo

date("Y-m-d

H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7-7,date("Y"))),"\n";

echo

'<br>本周:<br>';

echo

date("Y-m-d

H:i:s",mktime(0,

0

,

0,date("m"),date("d")-date("w")+1,date("Y"))),"\n";

echo

date("Y-m-d

H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y"))),"\n";

echo

'<br>上月:<br>';

echo

date("Y-m-d

H:i:s",mktime(0,

0

,

0,date("m")-1,1,date("Y"))),"\n";

echo

date("Y-m-d

H:i:s",mktime(23,59,59,date("m")

,0,date("Y"))),"\n";

echo

'<br>本月:<br>';

echo

date("Y-m-d

H:i:s",mktime(0,

0

,

0,date("m"),1,date("Y"))),"\n";

echo

date("Y-m-d

H:i:s",mktime(23,59,59,date("m"),date("t"),date("Y"))),"\n";

$getMonthDays

=

date("t",mktime(0,

0

,

0,date('n')+(date('n')-1)%3,1,date("Y")));//本季度未最后一月天数

echo

'<br>本季度:<br>';

echo

date('Y-m-d

H:i:s',

mktime(0,

0,

0,date('n')-(date('n')-1)%3,1,date('Y'))),"\n";

echo

date('Y-m-d

H:i:s',

mktime(23,59,59,date('n')+(date('n')-1)%3,$getMonthDays,date('Y'))),"\n";

自己理了一下思路,因为我做的时候sql语句里用的是小于和大于,所以直接统计到下一天的0点。最后返回的是数组。

//开始时间

$startDate = "2013-12-12";

//结束时间

$endDate = "2013-12-16";

//跨越天数

$n = (strtotime($endDate)-strtotime($startDate))/86400;

//结束时间加一天(sql语句里用的是小于和大于,如果有等于的话这句可以不要)

$endDate = date("Y-m-d 00:00:00",strtotime("$endDate +1 day"));

//判断,跨度小于7天,可能是同一周,也可能是两周

if($n<7){

//查开始时间 在 那周 的 位置

$day = date("w",strtotime($startDate))-1;

//查开始时间 那周 的 周一

$week_start = date("Y-m-d 00:00:00",strtotime("$startDate -{$day} day"));

//查开始时间 那周 的 周末

$day = 7-$day;

$week_end = date("Y-m-d 00:00:00",strtotime("$startDate +{$day} day"));

//判断周末时间是否大于时间段的结束时间,如果大于,那就是时间段在同一周,否则时间段跨两周

if($week_end>=$endDate){

$weekList[] =array($startDate,$endDate);

}else{

$weekList[] =array($startDate,$week_end);

$weekList[] =array($week_end,$endDate);

}

}else{

//如果跨度大于等于7天,可能是刚好1周或跨2周或跨N周,先找出开始时间 在 那周 的 位置和那周的周末时间

$day = date("w",strtotime($startDate))-1;

$week_start = date("Y-m-d 00:00:00",strtotime("$startDate -{$day} day"));

$day = 7-$day;

$week_end = date("Y-m-d 00:00:00",strtotime("$startDate +{$day} day"));

//先把开始时间那周写入数组

$weekList[] =array($startDate,$week_end);

//判断周末是否大于等于结束时间,不管大于(2周)还是等于(1周),结束时间都是时间段的结束时间。

if($week_end >= $endDate){

$weekList[] = array($week_end,$endDate);

}else{

//N周的情况用while循环一下,然后写入数组

while($week_end <= $endDate){

$start = $week_end;

$week_end = date("Y-m-d 00:00:00",strtotime("$week_end +7 day"));

if($week_end <= $endDate){

$weekList[] = array($start,$week_end);

}else{

$weekList[] = array($start,$endDate);

}itjob

}

}

}

以上就是关于php语言 计算每个月有几周及每周的起始时间 求程序实现的代码全部的内容,包括:php语言 计算每个月有几周及每周的起始时间 求程序实现的代码、PHP 编程 计算本周五日期和下一个周五的日期、用php获取本周,上周,本月,上月,本季度日期的代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9675450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存