หน้าแรก > วิถีทางแห่งโปรแกรมเมอร์ > เรื่องของเวลาที่แตกต่างกัน ^^

เรื่องของเวลาที่แตกต่างกัน ^^

อิ อิไม่ได้เขียนโปรแกรม นานสนิมขึ้นไปหลายรอบ เฮอะๆๆ เมื่อน้องถาม เรื่องการคำนวณเวลาที่แตกต่างกัน
แต่ถ้าเป็น Mysql เวอร์ชั่ย 4.1 Up ก็คงจะดีน่ะครับ จะได้โยนไปให้ DBMS จัดการให้ ด้วยคำสั้ง
  • DATEDIFF(expr1,expr2)

    DATEDIFF() returns expr1expr2 expressed as a value in days from one date to the other. expr1 and expr2 are date or date-and-time expressions. Only the date parts of the values are used in the calculation.

    mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
            -> 1
    mysql> SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');
            -> -31
    แต่ ถ้าเราใช้ตำกว่านี้ละครับ อิ อิ หลังจากที่ใช้ explod มานาน ก็ได้ลองเขียนเป็นฟังก์ชั้นขึ้นมา
  •  

    function getDateTimeDiff($xTime,$xLimit=24){
       $sessionTime=strtotime($xTime);
       $currentTime=strtotime(date("Y-m-d H:i:s",time()));
       $totalSecTime = $currentTime - $sessionTime;
       $totalSecTime=$xLimit*3600-$totalSecTime;
       if($totalSecTime < 0 ){
         return '00:00:00';
       }else{
       $hh = substr("00".floor($totalSecTime / 3600),-2) ;
       $tmpMin = $totalSecTime % 3600;
       $mm = substr("00".floor($tmpMin / 60),-2) ;
       $tmpSec = substr("00".($tmpMin % 60),-2);
       return $hh.":".$mm.":".$tmpSec;
       }
    }

    ฟังชันนี้ จะรับเวลาใน format  "2006-05-28 12:00:54" และจำนวนชั่วโมง

    และเอาเวลาที่รับมา มาเปรียบเทียบกับเวลาปัจจุบันว่า เหลืออีกกี่ ชม: นาที: วินาที 

    เช่นสมมุติ เวลาปัจจุบันคือ 2006-05-28 11:00:00 และเรียกใช้ฟังก์ชันว่า

    getDateTimeDiff("2006-05-28 10:00:00",2);

    ฟังก์ชันจะ เอาเวลาที่รับมานั่นคือ  2006-05-28 10:00:00

    มาบวกเข้าอีก 2 ชั่วโมง จึงเป็น  2006-05-28 12:00:00  และเปรียบเทียบกับเวลาปัจจุบัน นั่นคือ 2006-05-28 11:00:00

    ดังนั้นเวลาที่ฟังก์ชัน return ค่าให้คือ  1:00:00 นั่นคือ 1 ชม เต็ม

    ฟังก์ชั่นเล็ก ๆ อาจจะเป็นประโยชน์ไม่มานั้งปวดหัวกับ explode เหมือนผมน่ะคัรบ หรือเพื่อนคนไหน เขียน
    ได้สั้นกว่านี้ก็แนะนำกันเข้ามาบ้างน่ะคัรบ

  • Advertisements
    1. ยังไม่มีความเห็น
    1. No trackbacks yet.

    ใส่ความเห็น

    Fill in your details below or click an icon to log in:

    WordPress.com Logo

    You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

    Twitter picture

    You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

    Facebook photo

    You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

    Google+ photo

    You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

    Connecting to %s

    %d bloggers like this: