|
|
|
ต้องการลบ วันที่ นะคะ จะได้ทราบว่า ห่างกันกี่วัน ต้องการลบ วันที่ นะคะ จะได้ทราบว่า ห่างกันกี่วัน 21/7/2010,2009-07-28 00:00:00 |
|
|
|
|
|
|
|
ลองค้นหาคำว่า DateDiff ครับ มีหลากหลายวิธี
|
|
|
|
|
Date :
2010-07-21 10:48:10 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-07-28 00:00:00 แปลงอันนี้ ให้เป็น 28/7/2009 ยังไงหรอคะ
|
|
|
|
|
Date :
2010-07-21 10:52:04 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าทำแบบถึกๆก็
น่าจะเปลี่ยน รูปแบบฐานข้อมูลจาก DateTime เป็น Date ก่อนนะ
แล้วค่อยทำการ explode แล้วมาสร้าง String ใหม่
แต่น่าจะมีวิธีที่ดีกว่านี้นะ
|
|
|
|
|
Date :
2010-07-21 10:58:00 |
By :
50121680 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$EX_NET_DUE_DATE_BLANK = explode(" ",$NET_DUE_DATE);
$EX_NET_DUE_DATE = explode("-",$EX_NET_DUE_DATE_BLANK[0]);
$NET_DUE_DATE = "$EX_NET_DUE_DATE[2]/$EX_NET_DUE_DATE[1]/$EX_NET_DUE_DATE[0]";
vอย่างนี้ได้ไม๊คะ
|
|
|
|
|
Date :
2010-07-21 11:06:10 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้ explode แยกเอา
|
|
|
|
|
Date :
2010-07-21 11:06:52 |
By :
Note |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$date="2010-07-21";
list($yy, $mm, $dd) = explode("-", $date);
|
|
|
|
|
Date :
2010-07-21 11:14:54 |
By :
50121680 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไมส่งวันที่ไปลบแล้วได้ผลแปลกๆ คะ
Code (PHP)
function DateDiff($strDate1,$strDate2)
{
return (strtotime($strDate2) - strtotime($strDate1))/ ( 60 * 60 * 24 ); // 1 day = 60*60*24
}
$NET_DUE_DATE = $itemrow['NET_DUE_DATE'];
$TODAY = date("d/m/Y");
$EX_NET_DUE_DATE_BLANK = explode(" ",$NET_DUE_DATE);
$EX_NET_DUE_DATE = explode("-",$EX_NET_DUE_DATE_BLANK[0]);
$aNET_DUE_DATE =array($EX_NET_DUE_DATE[2], $EX_NET_DUE_DATE[1], $EX_NET_DUE_DATE[0]);
$NET_DUE_DATE = implode("/", $aNET_DUE_DATE);
$OVERDUE = DateDiff($TODAY,$NET_DUE_DATE);
echo $TODAY .",".$NET_DUE_DATE.",".$OVERDUE ."<br/>";
มันจะได้อย่างนี้คะ
21/07/2010,10/08/2010,14889.6666667
21/07/2010,11/08/2010,14920.7083333
21/07/2010,13/08/2010,0
งง คะ
|
|
|
|
|
Date :
2010-07-21 11:24:40 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้วทำไมต้องเป็น 21/07/2010 ละครับ
อย่างที่ผมบอกไป
ฟอร์แมท มันเป็น 2010-07-21 ไม่ใช่ 21/07/2010
ปี-เดือน-วัน
แบบนี้ด้วยนะ
Code (PHP)
$date="2010-07-21";
ไม่ใช่
Code (PHP)
$date=2010-07-21;
|
|
|
|
|
Date :
2010-07-21 11:30:36 |
By :
50121680 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ฟอร์แมต เป็น / ไม่ได้หรอค๊า
|
|
|
|
|
Date :
2010-07-21 11:35:57 |
By :
NOTE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เปลี่ยนแล้ว ผลก็ยังแปลกๆ เหมือนเดิม คะ เปลี่ยน ตรง
Code (PHP)
$NET_DUE_DATE = $itemrow['NET_DUE_DATE'];
$DOC_DATE = $itemrow['DOC_DATE'];
$TODAY = "date(\"d/m/Y\")"; // เปลี่ยนตรงนี้ ให้เป็น อย่างนี้นะคะ
$EX_NET_DUE_DATE_BLANK = explode(" ",$NET_DUE_DATE);
$EX_NET_DUE_DATE = explode("-",$EX_NET_DUE_DATE_BLANK[0]);
$aNET_DUE_DATE =array($EX_NET_DUE_DATE[2], $EX_NET_DUE_DATE[1], $EX_NET_DUE_DATE[0]);
$NET_DUE_DATE = implode("/", $aNET_DUE_DATE);
echo $NET_DUE_DATE ."<br/>";
$OVERDUE = DateDiff($NET_DUE_DATE,$TODAY);
echo $TODAY .",".$NET_DUE_DATE.",".$OVERDUE ."<br/>";
|
|
|
|
|
Date :
2010-07-21 11:38:44 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าจะใช้งานกัน SQL ก็ต้องเป็นฟอร์แมตแบบนั้นครับ
ถ้าจะทำอย่างอื่นก็ เอามาแปลง String เอาเองครับ
|
|
|
|
|
Date :
2010-07-21 11:39:33 |
By :
50121680 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไอนี่ของคุณครับ สังเกตุหน่อยๆ
Code (PHP)
$NET_DUE_DATE = implode("/", $aNET_DUE_DATE);
มันยังเป็น / ไม่ใช่ -
|
|
|
|
|
Date :
2010-07-21 11:40:45 |
By :
50121680 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
นั่นเด่วแปลง ทั้ง 2 ให้เป็นแบบมี - คั่นแล้วเอามาคำนวนนะคะ
|
|
|
|
|
Date :
2010-07-21 11:41:02 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใน db = 2010-07-21
แปลง เป็น 21/7/2553 ถ้าให้ 2010 ก็ // หน้า $year
list($year, $month, $day) = split('[/.-]', $ฟิลล์);
$year = $year + 543;
$ฟิลล์= "$day/$month/$year";
|
|
|
|
|
Date :
2010-07-21 11:50:40 |
By :
ปู |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้วไอตรงนี้ด้วย
Code (PHP)
$TODAY = date("d/m/Y");
มันคงคำนวนไม่ได้หรอกถ้าเป็น 2010-07-21 ลบกับ 20/07/2010
เปลี่ยนเป็น
Code (PHP)
$TODAY = date("Y-d-m");
คือยังไงๆ ก่อนที่คุณจะ
Code (PHP)
$OVERDUE = DateDiff($NET_DUE_DATE,$TODAY);
ก็ควรแปลง $NET_DUE_DATE กับ $TODAY ให้เป็นไปตาม ฟอแมตก่อน(YYYY-MM-DD)
|
|
|
|
|
Date :
2010-07-21 12:11:53 |
By :
50121680 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คะได้แล้วคะ แต่ยังติดตรงที่ว่า
2010-03-26
2010-07-21,2010-03-26,-116.958333333
เอา (2010-03-26)-(2010-07-21) --> ต้องได้ -115 แต่ดันไปได้ -116.95833333 เน่ยะคะ
2010-07-21,2010-02-26,-144.958333333
2010-07-21,2010-03-05,-137.958333333
2010-07-21,2010-03-12,-130.958333333
2010-07-21,2010-03-19,-123.958333333
แต่ถ้าเป็น วันที่นี้คะ
2010-07-21,2010-04-09,-103
ค่ามันโอเคนะคะ
|
|
|
|
|
Date :
2010-07-21 13:08:06 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มันเกี่ยวกับการนับวันเดือนกุมภา ด้วยป่าว
|
|
|
|
|
Date :
2010-07-21 13:13:29 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ่าว แล้ว มัน จะตรงยังไงอ่า
|
|
|
|
|
Date :
2010-07-21 13:20:28 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ้าว มันก็ถูกแล้วนิครับ
คุณคิดกับอะไรหล่ะถึงได้ -115
|
|
|
|
|
Date :
2010-07-21 13:23:17 |
By :
50121680 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
นับวัน จิง ๆ อะคะ
|
|
|
|
|
Date :
2010-07-21 13:26:14 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้ว จำนวน วัน มันมีค่าเปนจุดทศนิยมด้วยหรอ ม่ายมีไม๊อ่ะ
แก้ไง น๊า ~><~
|
|
|
|
|
Date :
2010-07-21 13:28:05 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อะ ขอบคุณค๊า
|
|
|
|
|
Date :
2010-07-21 13:44:39 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าทำแบบนั้น วันที่ ที่มันตรงแล้ว ก็จะถูกลบไปด้วย จิ่
|
|
|
|
|
Date :
2010-07-21 13:50:56 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ส่วนถ้าอยากได้วัน ตามแบบนับของคุณก็
ปัดเศษซะ แล้วลบ1 จบ
|
|
|
|
|
Date :
2010-07-21 14:05:58 |
By :
50121680 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือถ้าทำแบบนั้น
ตัวที่ มันไม่ได้มีจุดทศนิยม มันตรงกับ ที่ เรานับอะ
ถ้าเราปัดเศษแล้ว ลบ1 ตัวที่ เรานับตรง แล้ว มันก็จะถูกหักลบ 1 ไปด้วย มัน ทำให้เพี้ยนไป มั้ยอ่าาา
หรือว่าโดยทั่วไป เค้าก็ บันทึกค่าต่างของเวลาแบบนี้อยู่แล้ว ที่เปน จุดทศนิยมเนี่ย
|
|
|
|
|
Date :
2010-07-21 14:18:58 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เหอะๆ มันมีการปัดค่าหลายแบบครับ ลงศึกษาและหาดู
|
|
|
|
|
Date :
2010-07-21 14:21:00 |
By :
50121680 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองใช้อันนี้ดูครับ
Code (PHP)
$get_date_now = date("d-m-Y");//เวลาปัจจุบัน format แบบนี้ 21-07-2010
$startdate = 15-07-2010 // ผมสมมุติขึ้นมา หรือจะไป get ค่าจะ db
//จัดรูปแบบวันที่
$begin = date("d-m-Y",strtotime($startdate));
$end = date("d-m-Y",strtotime($get_date_now));
if(($years = $years = $end-$begin)==0){
$begin = date("z",strtotime($startdate ));//จัดรูปแบบ
$end = date("z",strtotime($get_date_now));
}else{
$years*=35;
$begin = date("z",strtotime($startdate ));
$end = date("z",strtotime($get_date_now));
}
//คำนวนหาวันที่เกินกำหนด
$check_over_loan = $end-$begin."</br>";
echo "$check_over_loan";
ไม่รู้ว่าตรงตามจุดประสงค์หรือไม่นะครับ
|
|
|
|
|
Date :
2010-07-21 15:25:21 |
By :
jackpeed |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเอาโค๊ดไปลองดู
โค๊ดนี้คุณต้องแยก วันเดือนปี ออกจากกันก่อน
แล้วเอาไปใส่ในตัวแปร
Code (PHP)
$DateStart = 26; //วันเริ่มต้น
$MonthStart = 3; //เดือนเริ่มต้น
$YearStart = 2010; //ปีเริ่มต้น
$DateEnd = 21; //วันสิ้นสุด
$MonthEnd = 7; //เดือนสิ้นสุด
$YearEnd = 2010; //ปีสิ้นสุด
$Start = mktime(0,0,0,$MonthStart ,$DateStart ,$YearStart);
$End = mktime(0,0,0,$MonthEnd,$DateEnd,$YearEnd);
$DateNum=($End -$Start)/86400;
echo $DateNum;
|
|
|
|
|
Date :
2010-07-21 15:28:03 |
By :
heng |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไม year ต้องคูณ 35 ด้วยหรอคะ
ขอบคุณนะคะ ที่ช่วยเขียนโค้ดให้
|
|
|
|
|
Date :
2010-07-21 15:30:26 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ต้องใส่ ท่อน
else ทั้งหมดเลยก็ได้ครับ
ผมก็ไม่แน่ใจ ว่ามันคืออะไร*35
เอาออกก็ไม่มีผลอะไรครับ
สรุปได้แล้วไช่มะครับ
|
|
|
|
|
Date :
2010-07-21 15:34:33 |
By :
jackpeed |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยังไม่ได้ลองคะ เหน ยังไม่เข้าใจโค้ดก็เลย ลองถามก่อน เด่วจะลองคะ
|
|
|
|
|
Date :
2010-07-21 15:38:10 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จาก No. 29 จริงๆแล้ว เขียนแค่นี้ก็ได้นะ
Code (PHP)
<?
$get_date_now = date("d-m-Y");//เวลาปัจจุบัน format แบบนี้ 21-07-2010
$startdate = '26-3-2010'; // ผมสมมุติขึ้นมา หรือจะไป get ค่าจะ db
$begin = date("z",strtotime($startdate));
$end = date("z",strtotime($get_date_now));
//คำนวนหาวันที่เกินกำหนด
$check_over_loan = $end-$begin;
echo "$check_over_loan";
?>
|
|
|
|
|
Date :
2010-07-21 15:42:38 |
By :
heng |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สรุป นั่งนับ ตั้งนาน ที่แท้ นับวันในปฏิทินผิดคะ ฮ่าๆๆๆๆๆๆๆๆๆๆๆๆ ปวดหัวเปนวัน
|
|
|
|
|
Date :
2010-07-21 15:55:49 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอโต๊ด ทุกคนก๊าป
|
|
|
|
|
Date :
2010-07-21 16:27:31 |
By :
โน้ต |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|