|
|
|
ขอความช่วยเหลือเรื่องหาจำนวนวันครับ ต้องการหาแค่จำนวนวันเท่านั้นระหว่าง 2007-06-02 - 2007-08-03 ประมาณนี้ครับโดยอยากได้คำตอบว่ามีกี่วัน |
|
|
|
|
|
|
|
ไม่รู้ว่าใครมีวิธีดีกว่านี้เปล่านะ ถ้ามีช่วยบอกด้วยละกาน
คือประมาณนี้นะ
<?
$start = "2007-06-02";
$end = "2007-06-30";
$start_day = explode("-",$start);
// $start_day[0] ----> year
// $start_day[1] ----> month
// $start_day[2] ----> day
$i = 0;
while(1){
$test = date("Y-m-d",mktime(0,0,0,$start_day[1],$start_day[2]+$i,$start_day[0]));
if($test == $end) break;
$i ++;
}
echo "total day is : $i";
?>
|
|
|
|
|
Date :
5 มิ.ย. 2550 10:10:22 |
By :
eee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณ คุณ eee มากน่ะครับที่มาช่วยตอบ แต่ช้าไปนิด ผมเขียนเองเส็ดซะแล้วล่อซะ 4-5 ชั่วโมง ฟังชั่นเดียว อิอิ
แต่ดูของคุณมีประโยชน์มากเลยครับ สั้นกระทัดรัดดี ผมเขียนโค้ดยาวมาก เพราะต้องผ่านเงื่อนไขหลายๆอย่างอ่ะครับ แต่ถ้าให้วนลูปเป็น ร้อยๆที ต่อ1หน้าก็ไม่ไหวอ่ะน่ะ ลองลงให้ดูดีกว่าเผื่อใครจะใช้
<?
function night($citext, $cotext){
list($yyyy, $mm, $dd)=explode("-",$citext);
list($yyyy2, $mm2, $dd2)=explode("-",$cotext);
if($yyyy > $yyyy2){$night=1;}
else{
$cici=date("z",mktime(0,0,0,$mm,$dd,$yyyy));
$coco=date("z",mktime(0,0,0,$mm2,$dd2,$yyyy2));
$year=($yyyy2-$yyyy);
//เงื่อนไขที่ 1 (0 ปี)
$night=($coco-$cici);
//เงื่อนไขที่ 2 (1 ปี)
if($year >=1){
$end_day=date("z",mktime(0,0,0,12,31,$yyyy));
$first=($end_day - $cici);
$total2=($coco+$first)+1;
$night=$total2;
}
//เงื่อนไขที่ 3 (2 ปีขึ้นไป)
$a=1;
while($year > $a){
if($a == $year) break;
$over1=date("z",mktime(0,0,0,12,31,$yyyy+$a));
if($a==1){$b=0;}
$over[$a]=($over1 + 1);
$total3=($b + $over[$a]);
$b=$total3;
$a++;
$night=($total3+$total2);
}
if($night <=0){$night=1;}
}
return $night;
}
echo night("2007-06-02","2008-01-04")."<br>";
?>
|
|
|
|
|
Date :
5 มิ.ย. 2550 16:18:46 |
By :
นิค |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|