แจกฟังก์ชั่นแปลง ปี-เดือน-วัน เป็น ผ่านมาแล้ว กี่วัน กี่ชั่วโมง กี่นาที กี่วินาที

October 2008 | By admin | PHP | Tags : | อ่าน : 685

พอดีวันนี้เขียนโปรแกรม ๆหนึ่ง ที่ต้องแสดง วันที่สร้าง และวันที่อัปเดต รายการ ซึ่งผมเก็บลงฐานข้อมูลในรูปแบบ 2008-01-31 12:10:21

เมื่อผมนำรายการมาแสดง มันจะเป็นแบบนี้

 

หัวข้อ create modify
รายงานจำนวนงานถ่วงล้อ 2008-05-13 12:00:01 2008-05-20 00:10:30
รายงานยอดเจียรจานดิสก์เบรกหลัง 2008-05-13 11:51:42  

 

วันที่สร้าง ก็เป็นอย่างที่เห็น วันที่อัปเดต ก็เป็นอย่างที่เห็น ดูยากเนอะ ก็เลยมีความคิดแว้บขึ้นมา เปลี่ยนวันที่แก้ไข จากอย่างที่เห็น ให้เป็น

 

หัวข้อ create modify
รายงานจำนวนงานถ่วงล้อ 2008-05-13 12:00:01 1 วัน 10ชั่วโมง 5นาที 20 วินาที ผ่านมา
รายงานยอดเจียรจานดิสก์เบรกหลัง 2008-05-13 11:51:42  

 

ดูง่ายกว่าเย้อะะะะ…

ว่าแล้วก็ลงมือเขียนฟังก์ชั่น ผลก็ออกมาอย่างที่เห็นด้านล่างแหล่ะครับ

<?php
/**
* Convert date
*
* @author platoosom
* @email platoosom@hotmail.com
* @created 2008-06-04 11:15
* @modified 2008-06-04 11:15
*
* input : array( ‘begin’=>date/datetime , ‘end’=>date/datetime )
* output : string
*/

if( ! function_exists( ‘compare_date’ ) ){

    function compare_date( $array ){

        if( ! is_array( $array ) ){ return ;}

        if( ( ! array_key_exists( ‘begin’ , $array )) || empty( $array['begin'] )){ return ;}

        if( ( ! array_key_exists( ‘end’ , $array )) || empty( $array['end'] )){ return ;}

        $begin_time = strtotime( $array['begin'] );
        $end_time = strtotime( $array['end'] );

        $amount_time = $end_time – $begin_time ;

        $list = array(
                                ‘day’=>array( ‘วัน’ , ’86400′ ) ,
                                ‘hour’=>array( ‘ชั่วโมง’ , ’3600′ ) ,
                                ‘munite’=>array( ‘นาที’ , ’60′ ) ,
                                ‘second’=>array( ‘วินาที’ , ’1′ )
        )
;

        foreach( $list as $value ):

            $result = floor( $amount_time / $value[1] );
            if( $result > 0 ){ $return[] = $result; $return[] = $value[0]; }

            $amount_time = $amount_time % $value[1];

        endforeach;

        return implode( ‘ ‘ , $return ).‘ ผ่านมา’;

    }
}

?>

วิธีเรียกใช้งาน จะส่ง ปี-เดือน-วัน เข้าไปอย่างเดียว หรือว่าส่ง ปี-เดือน-วัน ชั่วโมง:นาที:วินาที เข้าไปก็ได้ครับผม

<?php

echo compare_date( array( ‘begin’=>’2008-01-31 10:10:10′,’end’=>’2008-02-01 20:11:30′ ) );

echo compare_date( array(‘begin’=>’2008-01-31′,’end’=>’2008-02-01′));

echo compare_date( array(‘begin’=>’2008-01-31′,’end’=>date( ‘Y-m-d H:i:s’ ) ));

?>

บทความน่าสนใจ

  1. PHP การส่งค่าตัวแปรเข้าไปในฟังก์ชั่นแบบใช้ array
  2. เลือกเอาเฉพาะค่าที่เหมือนกันใน Array
  3. ลบค่าที่ซ้ำกันใน Array ทิ้ง
  4. PHP date() ฟังก์ชั่นจัดการวัน-เวลา
  5. ต่อเนื่องจาก ฟังก์ชั่นสำหรับแปลง ตัวเลขเดือน เป็นตัวหนังสือ
Tags:

ผู้เขียน:

เว็บไซต์ :http://

แสดงความเห็น

ชื่อ *
Email *
Website
ความคิดเห็น