note 56200 deleted from ref.datetime by nlopess
| From: | nlopess@php.net | Date: | Wed, 07 Sep 2005 20:13:26 +0000 |
| Subject: | note 56200 deleted from ref.datetime by nlopess | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-94875@lists.php.net to get a copy of this message | ||
Note Submitter: amit_sandilya at hotmail dot com
----
To get count of week, weeks, day for particular week,date range,incremented date range, week's
from date and week's to date.
function date_compare($date1,$date2)
{
$time1=strtotime($date1);
$time2=strtotime($date2);
$day_count=0;
if($time2>$time1)
{
$time3=$time1;
for($i=$time3;$i<$time2;)
{
list($fy,$fm,$fd) = explode("-",$date1);
$date1= date("Y-m-d",mktime(0,0,0,$fm,$fd+1,$fy));
$time3=strtotime($date1);
if($time3==$time2)
{
$i=$time2;
}
$i=$time3;
$day_count++;
}
$val=1;
}
if($time1>$time2)
{
$time3=$time2;
for($i=$time3;$i<$time1;)
{
list($fy,$fm,$fd) = explode("-",$date2);
$date2= date("Y-m-d",mktime(0,0,0,$fm,$fd+1,$fy));
$time3=strtotime($date2);
if($time3==$time1)
{
$i=$time1;
}
$i=$time3;
$day_count++;
}
$val=-1;
}
elseif($time1==$time2)
{
$val=0;
}
return array($val,$day_count);
}
function get_week($date1,$date2,$end_date='')
{
$from_date=array();
$to_date=array();
$range=array();
$range1=array();
$day=array();
if($end_date<0){$end_date=6;}
if($end_date=="")
{
list($fm1,$fd1,$fy1) = explode("-",$date2);
$end_date= date("w",mktime(0,0,0,$fm1,$fd1,$fy1));
}
list($fm,$fd,$fy) = explode("-",$date1);
list($fm1,$fd1,$fy1) = explode("-",$date2);
$dat= date("w",mktime(0,0,0,$fm,$fd,$fy));
$dat_start=$dat;
$fdate1= date("Y-m-d",mktime(0,0,0,$fm,$fd,$fy));
$fdate2= date("Y-m-d",mktime(0,0,0,$fm1,$fd1,$fy1));
$fdate2_inc= date("Y-m-d",mktime(0,0,0,$fm1,$fd1+1,$fy1));
$check=date_compare($fdate2,$fdate1);
$from_date[]=$fdate1;
$deterange="'".$fdate1."' and ";
$week=0;
while($check[0]<0)
{
$i=0;
while($dat_start!=$end_date)
{
$day[$week][]= date("D",mktime(0,0,0,$fm,$fd+$i,$fy));
$dat_start= date("w",mktime(0,0,0,$fm,$fd+$i,$fy));
$i++;
}
if($week==0 && $dat==$end_date)
$day[$week][]= date("D",mktime(0,0,0,$fm,$fd+$i,$fy));
if($i>0)$i--;
$inc=$i+1;
$tdate= date("Y-m-d",mktime(0,0,0,$fm,$fd+$i,$fy));
$tdate_inc= date("Y-m-d",mktime(0,0,0,$fm,$fd+$i+1,$fy));
$fdate1= date("Y-m-d",mktime(0,0,0,$fm,$fd+$inc,$fy));
$check=date_compare($fdate2,$fdate1);
if($check[0]!=1)
{
$from_date[]=$fdate1;
$to_date[]=$tdate;
$range[]=$deterange."'".$tdate."'";
$range1[]=$deterange."'".$tdate_inc."'";
$deterange="'".$fdate1."' and ";
}
list($fy,$fm,$fd) = explode("-",$fdate1);
$dat_start=$end_date+1;
$week++;
}
$to_date[]=$fdate2;
$range[]=$deterange."'".$fdate2."'";
$range1[]=$deterange."'".$fdate2_inc."'";
$deterange=$deterange.",".$fdate2;
$count=count($to_date);
return array($from_date,$to_date,$count,$range,$range1,$day);
}
$date1="08-01-2005";
$date2="08-31-2005";
$end_date=2;
$data=get_week($date1,$date2,$end_date);
print_r($data[0]);
echo "<br>";
print_r($data[1]);
echo "<br>";
print_r($data[2]);
echo "<br>";
print_r($data[3]);
echo "<br>";
print_r($data[4]);
echo "<br>";
print_r($data[5]);