Как сделать ограничение по дате в php? - PullRequest
1 голос
/ 29 июля 2011

Как я могу ограничить эту дату или распечатать эту дату от star_date до end_date? напр.

$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";

Ответы [ 6 ]

3 голосов
/ 29 июля 2011

Я бы предложил взять дату начала в качестве объекта и продолжать добавлять 1 день (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'));
}
?>

Приведенный выше код не был проверен.

2 голосов
/ 29 июля 2011

и еще один ....

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));
2 голосов
/ 29 июля 2011
$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;       
}
2 голосов
/ 29 июля 2011

Это могло бы сделать это ...

$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);
}
1 голос
/ 29 июля 2011

Это работает:

$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.Я изменил вашу июльскую дату на 07-07, чтобы соответствовать вашему комментарию.

0 голосов
/ 29 июля 2011
$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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...