2011-07-29 5 views
1

어떻게이 날짜를 제한하거나이 날짜를 star_date에서 end_date로 인쇄 할 수 있습니까? 예. 이 그것을 할 수PHP에서 날짜 제한 만드는 법?

$start_date="2011-05-15";//june 15 2011 

$end_date="2011-07-30";//july -7,2011 

The result should be. 

$dates[]="2011-05-15"; 
$dates[]="2011-05-16"; 
$dates[]="2011-05-17"; 
$dates[]="2011-05-18"; 
$dates[]="...."; 
$dates[]="...."; 
$dates[]="...."; 
$dates[]="...."; 
until it reaches. 
$dates[]="2011-07-30"; 
+1

가능한 복제본 [PHP : 날짜 범위 내 모든 달을 반복합니까?] (http://stackoverflow.com/questions/2155110/php-loop-thru-all-months-in-date-range) – Gordon

답변

1

이 작동 :

$start_date = "2011-05-15"; 
$end_date = "2011-07-07"; 

$dates = array(); 
$stop = strtotime($end_date); 
for($i = strtotime($start_date); $i <= $stop; $i += 86400) 
    $dates[] = date('Y-m-d', $i); 

PS합니다. 귀하의 7 월 날짜를 07-07으로 변경하여 귀하의 의견과 일치하도록하겠습니다.

+0

정확하게 찾고있는 내용입니다. 고맙습니다. – kedomonzter

+1

@mocca 86400은 하루의 초 수입니다. '$ i'의 값은 초 단위이므로, 다음 날까지 86400 씩 증가시킵니다. – Paulpro

2

...

$start_date = strtotime('2011-05-15'); //june 15 2011 
$end_date = strtotime('2011-07-30'); //july -7,2011 
$dates = array(); 
for ($i=$start_date; $i<=$end_date; $i+=86400) { 
    $dates[] = date('Y-m-d',$i); 
} 
2
$start_date="2011-05-15"; 
$end_date="2011-07-30"; 
$date=$start_date; 
while (strtotime($new_date) != strtotime($end_date)) 
{ 
    echo $new_date=date("Y-m-d",strtotime("+1 day", strtotime($date)))."<br>"; 
    $dates[]=$new_date; 
    $date=$new_date;  
} 
3

내가 개체로 시작 날짜를 보시기 바랍니다 당신이 도달 할 때까지 루프에서 일일 (http://www.php.net/manual/en/datetime.add.php) 계속 추가 할 것 종료일.

<?php 
$start_date = new DateTime('2011-05-15'); 
$end_date = new DateTime('2011-07-30'); 
while($end_date > $start_date) 
{ 
    echo $start_date->format('Y-m-d') . "\n"; 
    $start_date->add(new DateInterval('P1D')); 
} 
?> 

위의 코드는 테스트되지 않았습니다.

0
$start_date = strtotime('2011-05-15'); 
$end_date = strtotime('2011-07-30'); 
$dates = array(); 
for ($i = $start_date; $i<=$end_date; $i+= (strtotime('+1 day') - strtotime('now'))) { 
    $dates[] = date('Y-m-d',$i); 
} 
2

그리고 또 ....

date_default_timezone_set('America/Los_Angeles'); 

$startDate='2011-05-15'; 
$endDate='2011-07-30'; 

$t1=strtotime($startDate); 
$days=(strtotime($endDate)-$t1)/86400; 

for($i=0;$i<=$days;$i++) $dates[]=date('Y-m-d',$t1+($i*86400)); 

print_r($dates); 

그리고 대한

'매우 효율적이지하지만 oneliner 대부분의 경우에 할 것'

for($t=strtotime($startDate);$t<=strtotime($endDate);$t+=86400) $dates[]=date('Y-m-d',$t); 

그리고 아는 사람들 하나, 이 아침 연습의 마지막 :

$dates=array_map(create_function('$t','return date("Y-m-d",$t);'),range(strtotime($startDate),strtotime($endDate),86400)); 
+1

예,하지만 진원지로 로스 앤젤레스를 설정하면 자동으로 한시간 씩 교통량이 늘어납니다 ... (신중) – neokio

+0

@neokio 죄송합니다. 시간대를 알 수 없으며 LA가 처음으로 목록에 포함되었습니다. – zaf