March 24, 2012

PHP: วัน และเวลา

ฟังชั่นที่แสดงวัน และเวลาออกมาใน 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 $timestamp ใช้สร้างวันเวลาขึ้นมาแสดงผล ผ่านฟังชั่น mktime() และ strtotime()
int mktime (
     [  int $hour = date("H")
     [, int $minute = date("i")
     [, int $second = date("s")
     [, int $month = date("n")
     [, int $day = date("j")
     [, int $year = date("Y") ]]]]]] )

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

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

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

No comments:

Post a Comment