PHP仅使用php获取当月的星期数 [英] PHP get number of week for current month only using php
本文介绍了PHP仅使用php获取当月的星期数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的星期数组。我尝试使用下面的代码,当前月份 9 和年份 2017 ,
Here, is my week array. The current month 9 and year 2017, I tried below code,
function getWeekDates($date, $start_date, $end_date) {
$week = date('W', strtotime($date));
$year = date('Y', strtotime($date));
$from = date("Y-m-d", strtotime("{$year}-W{$week}+1"));
if ($from < $start_date)
$from = $start_date;
$to = date("Y-m-d", strtotime("{$year}-W{$week}-7"));
if ($to > $end_date)
$to = $end_date;
$array1 = array(
"ssdate" => $from,
"eedate" => $to,
);
return $array1;
}
$mm = date('m');
$yy = date('y');
$startdate = date($yy . "-" . $mm . "-01");
$current_date = date('Y-m-t');
$ld = cal_days_in_month(CAL_GREGORIAN, $mm, $yy);
$lastday = $yy . '-' . $mm . '-' . $ld;
$start_date = date('Y-m-d', strtotime($startdate));
$end_date = date('Y-m-d', strtotime($lastday));
$end_date1 = date('Y-m-d', strtotime($lastday . " + 7 days"));
$count_week = 0;
$week_array = array();
for ($date = $start_date; $date < $end_date1; $date = date('Y-m-d', strtotime($date . ' + 7 days'))) {
$getarray = getWeekDates($date, $start_date, $end_date);
$week_array[] = $getarray;
$count_week++;
}
echo '<pre>';
print_r($week_array);
我从 PHP获取每月的周数此链接。
这是我的星期数组:
Array
(
[0] => Array
(
[ssdate] => 2017-09-01
[eedate] => 2017-09-03
)
[1] => Array
(
[ssdate] => 2017-09-04
[eedate] => 2017-09-10
)
[2] => Array
(
[ssdate] => 2017-09-11
[eedate] => 2017-09-17
)
[3] => Array
(
[ssdate] => 2017-09-18
[eedate] => 2017-09-24
)
[4] => Array
(
[ssdate] => 2017-09-25
[eedate] => 2017-09-30
)
[5] => Array
(
[ssdate] => 2017-10-02
[eedate] => 2017-09-30
)
)
但我只想要当前月份数组,例如以下
Array
(
[0] => Array
(
[sdate] => 2017-09-01
[sdate] => 2017-09-02
[sdate] => 2017-09-03
)
[1] => Array
(
[sdate] => 2017-09-04
[sdate] => 2017-09-05
[sdate] => 2017-09-06
[sdate] => 2017-09-07
[sdate] => 2017-09-08
[sdate] => 2017-09-09
[sdate] => 2017-09-10
)
[2] => Array
(
[sdate] => 2017-09-11
[sdate] => 2017-09-12
[sdate] => 2017-09-13
[sdate] => 2017-09-14
[sdate] => 2017-09-15
[sdate] => 2017-09-16
[sdate] => 2017-09-17
[sdate] => 2017-09-18
)
[3] => Array
(
[sdate] => 2017-09-18
[sdate] => 2017-09-19
[sdate] => 2017-09-20
[sdate] => 2017-09-21
[sdate] => 2017-09-22
[sdate] => 2017-09-23
[sdate] => 2017-09-24
)
[4] => Array
(
[sdate] => 2017-09-25
[sdate] => 2017-09-26
[sdate] => 2017-09-27
[sdate] => 2017-09-28
[sdate] => 2017-09-29
[sdate] => 2017-09-30
)
)
请帮助我解决此问题
预先感谢!!!
推荐答案
如果您想要当前月份的数据,那么为什么要比较 $ end_date1
(距离前一天+7天)。您需要在for循环中添加 $ end_date
的条件。更改循环如下:
if you want current month data then why are you comparing $end_date1
(which is +7 days from last day). You need to add condition for $end_date
in for loop. change for loop as below :
for ($date = $start_date; $date < $end_date; $date = date('Y-m-d', strtotime($date . ' + 7 days'))) {
$getarray = getWeekDates($date, $start_date, $end_date);
$week_array[] = $getarray;
$count_week++;
}
编辑根据您的评论,当出现问题时一个月31天。因此,我更改了一些代码。试试吧。更改 function getWeekDates
如下:
EDIT as per your comment there is issue when 31 days month. So I have change some code. try it. change function getWeekDates
as below:
function getWeekDates($date, $start_date, $end_date) {
$week = date('W', strtotime($date));
$year = date('Y', strtotime($date));
$from = date("Y-m-d", strtotime("{$year}-W{$week}+1"));
if ($from < $start_date)
$from = $start_date;
$to = date("Y-m-d", strtotime("{$year}-W{$week}-7"));
if ($to > $end_date)
$to = $end_date;
if($from > $end_date)
{
$array1 = array(
);
}
else
{
$array1 = array(
"ssdate" => $from,
"eedate" => $to,
);
}
return $array1;
}
然后更改循环如下:
for ($date = $start_date; $date <= $end_date1; $date = date('Y-m-d', strtotime($date . ' + 7 days'))) {
$getarray = getWeekDates($date, $start_date, $end_date);
if(count($getarray))
{
$week_array[] = $getarray;
$count_week++;
}
}
这篇关于PHP仅使用php获取当月的星期数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文