Php 查找两周数字之间所有周的开始和结束日期
我正在尝试获取两周数字之间的所有周的开始日期和结束日期 这是我的一个日期是2014-05-17,周数是20,另一个日期是2014-08-13,周数是33。 我的任务是获得20到33之间所有周的开始和结束日期。这里星期天是一周的开始,星期六是一周的结束Php 查找两周数字之间所有周的开始和结束日期,php,date,Php,Date,我正在尝试获取两周数字之间的所有周的开始日期和结束日期 这是我的一个日期是2014-05-17,周数是20,另一个日期是2014-08-13,周数是33。 我的任务是获得20到33之间所有周的开始和结束日期。这里星期天是一周的开始,星期六是一周的结束 $signupweek='2014-05-17'; $signupweek=date("W",strtotime($signupdate)); //week number of current date. $weekNumber = date("
$signupweek='2014-05-17';
$signupweek=date("W",strtotime($signupdate));
//week number of current date.
$weekNumber = date("W");
任何人都可以帮助查找日期。下面是一个从以下位置实现该函数的示例:
$signupweek='2014-05-17';
$signupweek=日期(“W”,标准时间($signupweek));
$current_week=日期('W');
$output=array();
//在给定的两周之间循环一周
//若要包括开始和结束周,请删除下面的+1,并使
//它是$i time()或strottime($dates['end'])>time()
继续;
//添加到输出数组
$output[]=$dates;
}
函数getStartAndEndDate($week,$year)
{
$time=strottime(“1月1日$year”,time());
$day=日期('w',$time);
$time+=((7*周)+1-$day)*24*3600;
$return['start']=日期('Y-n-j',$time);
$time+=6*24*3600;
$return['end']=日期('Y-n-j',$time);
return$return;
}
试试这个:
$startTime = "2014-05-17";
$startWeek = 20;
$endWeek = 33;
for ($i = 0; $i <= ($endWeek - $startWeek); $i++) {
$days = $i * 7;
echo date("Y-m-d", strtotime($startTime . "+$days day")).'<br />';
}
$startTime=“2014-05-17”;
$startWeek=20;
$endWeek=33;
对于($i=0;$i另一种方法
如果您有一个日期
,从该日期开始,您可以找到该周的开始日期
和结束日期
。但此处不使用周数
例如:
您有一个日期
2014-08-13,然后所需的开始日期
为2014-08-10,结束日期
为2014-08-16
PHP代码是
$signupweek='2014-8-13';
/*start day*/
for($i = 0; $i <7 ; $i++)
{
$date = date('Y-m-d', strtotime("-".$i."days", strtotime($signupweek)));
$dayName = date('D', strtotime($date));
if($dayName == "Sun")
{
echo "start day is ". $date."<br>";
}
}
/*end day*/
for($i = 0; $i <7 ; $i++)
{
$date = date('Y-m-d', strtotime("+".$i."days", strtotime($signupweek)));
$dayName = date('D', strtotime($date));
if($dayName == "Sat")
{
echo "end day is ". $date."<br>";
}
}
希望这有用。试试这个
$signupdate='2014-05-17';
$signupweek=date("W",strtotime($signupdate));
$year=date("Y",strtotime($signupdate));
$currentweek = date("W");
for($i=$signupweek;$i<=$currentweek;$i++) {
$result=getWeek($i,$year);
echo "Week:".$i." Start date:".$result['start']." End date:".$result['end']."<br>";
}
function getWeek($week, $year) {
$dto = new DateTime();
$result['start'] = $dto->setISODate($year, $week, 0)->format('Y-m-d');
$result['end'] = $dto->setISODate($year, $week, 6)->format('Y-m-d');
return $result;
}
现在可以使用DateTime获取一周的开始/结束日期
对于优秀的程序员来说,这似乎是一个挑战
start day is 2014-08-10
end day is 2014-08-16
$signupdate='2014-05-17';
$signupweek=date("W",strtotime($signupdate));
$year=date("Y",strtotime($signupdate));
$currentweek = date("W");
for($i=$signupweek;$i<=$currentweek;$i++) {
$result=getWeek($i,$year);
echo "Week:".$i." Start date:".$result['start']." End date:".$result['end']."<br>";
}
function getWeek($week, $year) {
$dto = new DateTime();
$result['start'] = $dto->setISODate($year, $week, 0)->format('Y-m-d');
$result['end'] = $dto->setISODate($year, $week, 6)->format('Y-m-d');
return $result;
}
Week:20 Start date:2014-05-11 End date:2014-05-17
Week:21 Start date:2014-05-18 End date:2014-05-24
Week:22 Start date:2014-05-25 End date:2014-05-31
Week:23 Start date:2014-06-01 End date:2014-06-07
Week:24 Start date:2014-06-08 End date:2014-06-14
Week:25 Start date:2014-06-15 End date:2014-06-21
Week:26 Start date:2014-06-22 End date:2014-06-28
Week:27 Start date:2014-06-29 End date:2014-07-05
Week:28 Start date:2014-07-06 End date:2014-07-12
Week:29 Start date:2014-07-13 End date:2014-07-19
Week:30 Start date:2014-07-20 End date:2014-07-26
Week:31 Start date:2014-07-27 End date:2014-08-02
Week:32 Start date:2014-08-03 End date:2014-08-09
Week:33 Start date:2014-08-10 End date:2014-08-16
function getDateRangeForAllWeeks($start, $end){
$fweek = getDateRangeForWeek($start);
$lweek = getDateRangeForWeek($end);
$week_dates = [];
while($fweek['sunday']!=$lweek['sunday']){
$week_dates [] = $fweek;
$date = new DateTime($fweek['sunday']);
$date->modify('next day');
$fweek = getDateRangeForWeek($date->format("Y-m-d"));
}
$week_dates [] = $lweek;
return $week_dates;
}
function getDateRangeForWeek($date){
$dateTime = new DateTime($date);
$monday = clone $dateTime->modify(('Sunday' == $dateTime->format('l')) ? 'Monday last week' : 'Monday this week');
$sunday = clone $dateTime->modify('Sunday this week');
return ['monday'=>$monday->format("Y-m-d"), 'sunday'=>$sunday->format("Y-m-d")];
}
print_r( getDateRangeForWeek("2016-05-07") );
print_r( getDateRangeForAllWeeks("2015-11-07", "2016-02-15") );