  | 
              
	              
	                
  
    
	 
        รบกวนหน่อยครับเรื่องการดึงข้อมูลจาก 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 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
      		  
	
     | 
   
 
                 |