|
|
|
รบกวนหน่อยครับเรื่องการดึงข้อมูลจาก database มาคำนวนเวลาว่า บวก หรือ ลดลงครับ |
|
|
|
|
|
|
|
Code (PHP)
funciton cv2diffStr( $diff){
$sec = $diff<0? -$diff : $diff;
$_1min = 60;
$_1hour = 60 * $_1min;
$_1day = 24 * $_1hour;
$d = floor( $sec/ $_1day); $sec-= $d * $_1day;
$h = floor( $sec/ $_1hour); $sec-= $h * $_1hour;
$m = floor( $sec/ $_1min); $sec-= $m * $_1min;
return ($idf<0? ' - ' : '' ) . $d . ' ' . $h . ':' . $m . ':' . $sec;
}
$last = '';
while(.....){
echo ($last == '' ? ' - ' : cv2diffStr(strtotime($last) - strtotime($r['time']));
$last = $r['time'];
}
|
ประวัติการแก้ไข 2015-05-27 06:29:24
|
|
|
|
Date :
2015-05-21 22:31:49 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าจะเพิ่ม milliseconds ในตารา phpMyadmin จะต้องทำอย่างไรข้างครับ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณพี่ๆมากครับที่ช่วยสอนผม
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ติดอยู่อีกนึดนึงครับ ผมใส่โค๊ตตามนี้ครับ
Code (PHP)
function cv2diffStr( $diff){
$sec = $diff<0? -$diff : $diff;
$_1min = 60;
$_1hour = 60 * $_1min;
$_1day = 24 * $_1hour;
$d = floor( $sec/ $_1day); $sec-= $d * $_1day;
$h = floor( $sec/ $_1hour); $sec-= $h * $_1hour;
$m = floor( $sec/ $_1min); $sec-= $m * $_1hour;
return ($diff<0? ' + ' : '-' ) .$h . ':' . $m . ':' . $sec ;
}
$last = '';
while ($r = $q->fetch(PDO::FETCH_ASSOC)) {
if (isset($last)) {
$diff = cv2diffStr(strtotime($last) - strtotime($r['time']));
} else {
$diff = 0;
}
echo $last == '' ? ' - ' : cv2diffStr(strtotime($last) - strtotime($r['time']));
$last = $r['time'];
echo '<tr><td>'.$r['match_name'].'</td><td>'.$r['time'].'</td><td>'.$diff.'</td></tr>';
$last = $r['time'];
}
?>
</tbody></table>
ทำงานได้แล้วครับ แต่ตรงวินาทีมันได้อย่างนี้ครับ(ตรงสีแดง)มันจะแก้ยังไงครับ ขอบคุณครับ
เวลา ผลการคำนวน
0:09:54.890 =+ 22:9:-31806
00:03:20.690 =-0:6:-21206
00:04:34.580 =+ 0:1:-3526
|
ประวัติการแก้ไข 2015-05-23 11:13:06 2015-05-23 11:13:38
|
|
|
|
|
|
|
|
|
|
|
|
|
08.$m = floor( $sec/ $_1min); $sec-= $m * $_1hour;
บันทัดนี้ ผมพิมพ์ผิด ลองดูตัวอย่าง บันทัด 06 07 แล้วแก้เองดูครับ
แบบเขียนสดไม่ได้เทสต์อะครับ
ปล. เพิ่มเติมให้อีกนิด
09. return ($diff<0? ' + ' : '-' ) .$h . ':' . $m . ':' . $sec ;
แก้เป็น
09.
return ($diff<0? ' + ' : '-' ) .$h . ':' . substr($m+100, 1) . ':' . substr($sec+100, 1) ;
|
ประวัติการแก้ไข 2015-05-23 13:08:04
|
|
|
|
Date :
2015-05-23 13:04:59 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ
และตรงวินาทีที่คำนวนออกมาแล้วจะให้ แสดงmicrosecจะต้องทำอย่างไรครับ
00:01:20.50 = 0
00:02:30.40 = +00:01:9.900
ขอบคุณครับ *ต้องขอโทษด้วยน้ะครับที่ผมถามเยอะไปหน่อย พอดีเพิ่งเริ่มเขียนจริงๆครับ*
|
ประวัติการแก้ไข 2015-05-23 13:49:52 2015-05-23 13:50:55
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำเกี่ยวกับอะไรครับ ถึงต้องใช้ระดับ milisec
การเก็บข้อมูล datetime ที่กำหนดให้เก็บ millisec มันเป็นการเก็บอีกรูปแบบ ตาม ลิงค์ที่ผมให้ไปอะครับ คห4
ถ้าจำเป็นต้องใช้จริงๆ ลองอ่านและทำความเข้าใจกับ รูปแบบการเก็บให้ดี
และลองเขียนดูก่อนครับ ยังไม่ต้องเอามาลบกัน ให้ นำเข้า และ แสดงผลได้ก่อน
ถ้าไม่เข้าใจระบบการเก็บ ก็จะคิดไม่ออกว่าจะเอามาลบกันยังไง ลองดูครับ
ติดปัญหาอย่างไรค่อยเอามาโพสถาม ไปทีละเสตป
millisec เป็นรุปแบบที่ ต้องใช้ประสบการณ์มากขึ้นมาอีกระดับครับ อยากจะให้เข้าใจพื้นฐานมันก่อน
|
|
|
|
|
Date :
2015-05-23 14:13:22 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จะเขียนเกี่ยวกับการเก็บสถิติของนักกีฬาว่ายน้ำครับว่าใน1ท่าการว่ายสถิติลดลงหรือเพิ่มขึ้นจากเดิมครับซึ่งบางครั้งอาจจะลดลงเหรือเพิ่มขึ้นเพียง millisec ครับ ซึ่งตอนนี้ในdatabaseสามารถทำได้เลยครับส่วนดค๊ตเดี๋วจะลองศึกษาและเขียนดูครับ
|
ประวัติการแก้ไข 2015-05-23 17:35:31
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมไม่แน่ใจว่าเพิ่มตรงไหน อ่าดูแล้วยัง งงๆอยู่ครับหรือผมใส่สูตรผิดผลที่ได้ประม่ณนี้ครับ
00:04:34.58 =+ 0:01:2532.89
00:01:59.76 =-0:02:7740.25
Code (PHP)
function cv2diffStr( $diff){
$sec = $diff<0? -$diff : $diff ;
$_msec = $sec/1000;
$_1min = 60;
$_1hour = 60 * $_1min;
$_1day = 24 * $_1hour;
$d = floor( $sec/ $_1day); $sec-= $d * $_1day;
$h = floor( $sec/ $_1hour); $sec-= $h * $_1hour;
$m = floor( $sec/ $_1min); $sec-= $m * $_1min;
$msec = floor ( $sec/$_msec); $sec-= $msec * $sec;
return ($diff<0? ' + ' : '-' ) .$h . ':' . substr($m+100, 1) . ':' . substr($sec+100, 1).'.'.substr ($msec+100,1);
}
$last = '';
while ($r = $q->fetch(PDO::FETCH_ASSOC)) {
if (isset($last)) {
$diff = cv2diffStr(strtotime($last) - strtotime($r['time']));
} else {
$diff = 0;
}
echo $last == '' ? ' - ' : cv2diffStr(strtotime($last) - strtotime($r['time']));
$last = $r['time'];
echo '<tr><td>'.$r['match_name'].'</td><td>'.$r['time'].'</td><td>'.$diff.'</td></tr>';
$last = $r['time'];
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จะตอบอย่างไรดีนะ
strtotime มันไม่ซัพพอร์ต millisec ครับ
ทดสอบ echo date( 'Y-m-d H:i:s.u', strtotime('2015-05-23 21:49:45.50'));
มันต้อง ใช้ฟังก์ชั่นพิเศษในการเรียก ลองอ่านจาก link ที่ผมให้ไปดีๆ ครับ
|
|
|
|
|
Date :
2015-05-23 21:53:58 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมยัง งงตรงฟังก์ชั่นพเศษครับ คือผมลองสร้างฟังก์ชั่นมาเพิ่มแล้วแต่ไม่รู้ว่าจะใส่ตรงส่วนไหนของ cv2diffStr ครับ หรือว่าต้องทำใหม่หมดทั้งฟังก์ชั่นครับ ขอบคุณครับ
Code (PHP)
function msec($diff)
{
list($usec, $sec) = explode(' ',microtime());
return intval(($usec+$sec)*1000);
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ครับ ต้องเขียน ใหม่ครับ เพราะ ตัวอย่างที่ทำ มันแค่รับ ส่วนต่างที่เป็น วินาที ยังไม่ถึง millisec ครับ
|
|
|
|
|
Date :
2015-05-24 13:19:13 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|