GORAGOD.com

เรื่องของเวลา อีกครั้ง

ปกติผมมักจะเก็บเวลาในรูป mktime คือเป็นตัวเลขล้วนๆ ซึ่งผมคิดว่ามันง่ายต่อการเปรียบเทียบภายนอกมากกว่า หากเราไม่ต้องการเปรียบเทียบโดยฟังก์ชั่นของ MySQL ซึ่งการเก็บเป็น mktime ทำให้เราสามารถคำนวณช่วงหรือความแตกต่างของเวลาได้ โดยการเอาเวลาที่ได้มาบวกหรือลบกันตรงๆ

เวลา mktime หาได้จาก

<?
  $mmktime = mktime( date( "H" ) + $hour, date( "i" ) + $min );
?>

โดยที่ $hour คือเวลาทดของ server หากเวลาไม่ตรงกับเครื่อง computer ที่บ้าน เป็นชั่วโมง อาจเป็นบวกหรือลบก็ได้ ส่วน $min ก็เช่นกัน เป็นเวลาทดในหน่วยนาที

เวลาปัจจุบันจะหาได้จาก

<?
  $mtime = date( "H:i" , $mmktime );
?>

$mtime จะให้ผลลัพท์ในรูปข้อความเวลา 24 ชม. เช่น 24:00
   
โดยปกติหากต้องการเก็บเวลาเพื่อเป็น log มักใช้ฟังก์ชั่นนี้

<?
  $logtime = date( "U" , $mmktime );
?>

ซึ่ง $logtime จะคืนค่าเวลาเป็น มิลลิวินาที ซึ่งเราอาจใช้ค่านี้เก็บเพื่อนำมาคำนวณได้ เช่นการคำนวณเวลาในการอยู่บนระบบ โดยการเก็บเวลานี้ไว้ตอน login และเมื่อ logout ก็ให้เอาเวลาปัจจุบันไปลบกับเวลาที่เก็บไว้ตอนเข้าระบบ ก็จะได้เวลาอยู่บนระบบ หน่วยเป็น วินาที ซึ่งหากต้องการแปลงกลับเป็น วัน ชม.นาที ก็สามารถคำนวณกลับได้โดยฟังก์ชั่นนี้

<?
  $day = intval( $online / 86400 ); // จำนวนวัน
  $hours = intval( ( $online % 86400 ) / 3600 ); // จำนวน ชั่วโมง
  $mins = intval( ( ( $online % 86400 ) % 3600 ) / 60 ); // จำนวน นาที
  $secs = intval( ( ( ( $online % 86400 ) % 3600) % 60 ) ); // จำนวน วินาที
?>

$online ได้มาจาก เวลาตอน logout ลบด้วย เวลาตอน login