วัน และเวลา

ฟังชั่นที่แสดงวัน และเวลาออกมาใน PHP จะใช้ date()

string date ( string $format[, int $timestamp = time() ] )

$format เป็นตัวกำหนดให้แสดงวัน และ/หรือเวลาออกมาในรูปแบบต่าง ๆ สามารถรายละเอียดของตัวอักษรที่ใช้แสดงผลได้จาก function.date นอกจากจะเขียนรูปแบบเองแล้ว PHP ยังเตรียมรูปแบบที่ใช้บ่อย (ในงานเบื้องหลัง) ไว้ให้บางส่วน

  • DATE_RSS: รูปแบบที่ใช้สำหรับ RSS (Sat, 24 Mar 2012 12:23:34 +0700)
  • DATE_COOKIE: รูปแบบที่ใช้สำหรับ cookie (Saturday, 24-Mar-12 12:23:34 ICT)
  • DATE_W3C: รูปแบบตาม W3C (2012-03-24T12:23:34+07:00)

ส่วนที่เหลือดูจาก class.datetime

    <?php

    echo date('l, F d, Y');
    // print: Saturday, March 24, 2012

    echo date('n/j/Y G:i');
    // print: 3/24/2012 13:42

    echo date('H:i:s');
    // print: 13:42:31

    echo date(DATE_RSS);
    // print: Sat, 24 Mar 2012 13:42:31 +0700

$timestamp ใช้สร้างวันเวลาขึ้นมาแสดงผล ผ่านฟังชั่น mktime() และ strtotime()

ผลของทั้ง 2 ฟังชั่นเหมือนกันคือได้ unix timestamp เหมือนกัน แต่ mktime() จะรับค่าเป็นตัวเลขระบุเจาะจง ส่วน strtotime() จะรับค่าเป็นข้อความได้

สำหรับ $now ใน strtotime() คือ เวลาที่เริ่มต้นคำนวณ หากระบุค่าของ $time เป็นข้อความสัมพันธ์กับการเพิ่มลดเวลา

    <?php

    $t = mktime(15, 36, 0, 3, 5, 2012);
    echo date('l, F d, Y H:i', $t);
    // print: Monday, March 05, 2012 15:36

    // tomorrow but current time
    $t = mktime(date("H"), date("i"), date("s"), date("n"), date("j")+1, date("Y"));
    echo date('l, F d, Y H:i') $t);
    // print: Sunday, March 25, 2012 13:46

    $t = strtotime("now");
    echo date('l, F d, Y H:i', $t);
    // print: Saturday, March 24, 2012 13:46

    $t = strtotime("tomorrow");
    echo date('l, F d, Y H:i', $t);
    // print: Sunday, March 25, 2012 00:00
    // note: time = 00:00

    $t = strtotime("+24 hours");
    echo date('l, F d, Y H:i', $t);
    // print: Sunday, March 25, 2012 13:46

    $t = strtotime("next saturday");
    echo date('l, F d, Y H:i', $t);
    // print: Saturday, March 31, 2012 00:00

    $t = strtotime("April 1, 2012");
    echo date('l, F d, Y H:i', $t);
    // print: Sunday, April 01, 2012 00:00

    $t_new = strtotime("+37 days 2 hours", $t);
    echo date('l, F d, Y H:i', $t_new);
    // print: Tuesday, May 08, 2012 02:00

แม้ว่า strtotime() จะสามารถพิมพ์เป็นภาษาที่มนุษย์เข้าใจได้ทันที แต่ว่าให้ระวังเรื่อง วัน-เดือน-ปี ที่เป็นตัวเลขจำนวนน้อย ๆ เช่น 10-11-12 เพราะบอกยากว่าแท้ที่จริงแล้วเป็นวันที่เท่าไหร่กันแน่ ทาง PHP จะทึกทักเอาเองว่า ถ้าคั่นด้วย / จะเป็นแบบอเมริกัน (m/d/y) แต่ถ้าคั่นด้วย - หรือ . จะเป็นแบบยุโรป (d-m-y) ทางออกที่ดีคือใช้มาตรฐาน ISO 8601 (YYYY-MM-DD) แทน

ฟังชั่นอื่น ๆ ที่เกี่ยวกับ วัน และเวลา ยังมีอีกมากสามารถอ่านเพิ่มได้จาก ref.datetime

blog comments powered by Disqus