メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

การทำงานกับ Date และ Time

บทนี้ครอบคลุมการจัดการวันที่และเวลาใน PHP โดยเน้นที่ฟังก์ชันพื้นฐานอย่าง `date()`, `time()` และ `strtotime()` พร้อมทั้งอธิบายการใช้งาน, ตัวอย่าง, และข้อควรระวัง...

การทำงานกับ Date และ Time

ในโลกของการพัฒนาเว็บ การจัดการกับวันที่และเวลาเป็นสิ่งที่หลีกเลี่ยงไม่ได้ ไม่ว่าจะเป็นการบันทึกเวลาที่ผู้ใช้สร้างบัญชี การแสดงวันที่ของบทความ หรือการคำนวณระยะเวลาระหว่างสองเหตุการณ์ PHP มีฟังก์ชันมากมายที่ช่วยให้เราจัดการกับวันที่และเวลาได้อย่างง่ายดาย ในบทนี้ เราจะมาเรียนรู้ฟังก์ชันพื้นฐานที่จำเป็นสำหรับการทำงานกับวันที่และเวลาใน PHP

การใช้ฟังก์ชัน date() เพื่อ Format วันที่และเวลา

ฟังก์ชัน date() เป็นฟังก์ชันที่สำคัญที่สุดในการ format วันที่และเวลาใน PHP ฟังก์ชันนี้รับ parameter สองตัว: format string และ timestamp (ซึ่งเป็น optional ถ้าไม่ระบุ จะใช้เวลาปัจจุบัน) format string เป็นตัวกำหนดรูปแบบของวันที่และเวลาที่จะแสดง

รูปแบบ (Format) ที่พบบ่อย:

  • Y: ปี ค.ศ. แบบเต็ม (เช่น 2023)
  • y: ปี ค.ศ. แบบย่อ (เช่น 23)
  • m: เดือน (01-12)
  • n: เดือน (1-12) ไม่เติม 0 ข้างหน้า
  • M: ชื่อเดือนแบบย่อ (เช่น Jan, Feb)
  • F: ชื่อเดือนแบบเต็ม (เช่น January, February)
  • d: วันที่ (01-31)
  • j: วันที่ (1-31) ไม่เติม 0 ข้างหน้า
  • D: ชื่อวันแบบย่อ (เช่น Mon, Tue)
  • l: ชื่อวันแบบเต็ม (เช่น Monday, Tuesday)
  • H: ชั่วโมง (00-23)
  • h: ชั่วโมง (01-12)
  • i: นาที (00-59)
  • s: วินาที (00-59)
  • a: am หรือ pm
  • A: AM หรือ PM
  • T: Timezone

ตัวอย่าง:

<?php
// แสดงวันที่และเวลาปัจจุบันในรูปแบบ YYYY-MM-DD HH:MM:SS
echo date("Y-m-d H:i:s");

// แสดงวันที่ปัจจุบันในรูปแบบ วัน/เดือน/ปี
echo date("d/m/Y");

// แสดงวันที่และเวลาปัจจุบันในรูปแบบ วัน เดือน ปี ชั่วโมง:นาที:วินาที AM/PM
echo date("l F d, Y h:i:s A");

// แสดง Timezone
echo date("T");
?>

กรณีใช้งานจริง:

  • แสดงวันที่สร้างบทความ: <p>Created on: <?= date("F d, Y", strtotime($article->created_at)) ?></p>
  • แสดงวันที่แก้ไขล่าสุด: <p>Last updated: <?= date("F d, Y h:i A", strtotime($article->updated_at)) ?></p>

ข้อผิดพลาดที่พบบ่อย: การลืม escape ตัวอักษรที่ต้องการแสดงผลโดยตรง เช่น ถ้าต้องการแสดง "Year: 2023" จะต้องเขียนเป็น date("Year: Y") เพราะ Y เป็น format string แต่ถ้าต้องการให้แสดงตัวอักษร Y จริงๆ ต้อง escape ด้วย backslash: date("Year: \Y") หรือใช้ single quote: date('Year: Y')

การใช้ฟังก์ชัน time() เพื่อหา Timestamp

Timestamp คือจำนวนวินาทีที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1970 เวลา 00:00:00 UTC ฟังก์ชัน time() จะคืนค่า timestamp ปัจจุบัน

ตัวอย่าง:

<?php
// แสดง timestamp ปัจจุบัน
echo time();
?>

กรณีใช้งานจริง:

  • บันทึกเวลาที่ผู้ใช้เข้าสู่ระบบ: $login_time = time();
  • คำนวณระยะเวลาที่ผู้ใช้อยู่ในระบบ: $session_duration = time() - $login_time;
  • สร้าง cache ที่หมดอายุ: $cache_expiry = time() + (60 * 60); // หมดอายุใน 1 ชั่วโมง

ข้อผิดพลาดที่พบบ่อย: การเข้าใจผิดว่า timestamp คือวันที่และเวลาที่มนุษย์อ่านได้ Timestamp เป็นเพียงตัวเลขที่แสดงถึงจำนวนวินาที การจะแปลง timestamp เป็นวันที่และเวลาที่อ่านได้ต้องใช้ฟังก์ชัน date()

การใช้ฟังก์ชัน strtotime() เพื่อแปลง String เป็น Timestamp

ฟังก์ชัน strtotime() เป็นฟังก์ชันที่มีประโยชน์มากในการแปลง string ที่อยู่ในรูปแบบวันที่และเวลาต่างๆ เป็น timestamp ฟังก์ชันนี้รองรับรูปแบบวันที่และเวลาที่หลากหลาย

ตัวอย่าง:

<?php
// แปลง string "now" เป็น timestamp
echo strtotime("now");

// แปลง string "10 September 2000" เป็น timestamp
echo strtotime("10 September 2000");

// แปลง string "+1 week" เป็น timestamp (1 สัปดาห์จากวันนี้)
echo strtotime("+1 week");

// แปลง string "+1 day" เป็น timestamp (1 วันจากวันนี้)
echo strtotime("+1 day");

// แปลง string "next Monday" เป็น timestamp (วันจันทร์หน้า)
echo strtotime("next Monday");

// แปลง string "last Sunday" เป็น timestamp (วันอาทิตย์ที่ผ่านมา)
echo strtotime("last Sunday");

// แปลง string "2023-10-27 10:30:00" เป็น timestamp
echo strtotime("2023-10-27 10:30:00");
?>

กรณีใช้งานจริง:

  • แปลงวันที่ที่รับมาจาก form: $appointment_date = $_POST['appointment_date']; $appointment_timestamp = strtotime($appointment_date);
  • คำนวณวันที่ในอนาคต: $event_date = "2023-12-25"; $reminder_date = date("Y-m-d", strtotime($event_date . " -1 week")); // เตือน 1 สัปดาห์ก่อนวัน event

ข้อผิดพลาดที่พบบ่อย:

  • รูปแบบวันที่ไม่ถูกต้อง: strtotime() อาจคืนค่า false ถ้า string ที่ส่งเข้าไปไม่ได้อยู่ในรูปแบบที่ฟังก์ชันรองรับ ควรตรวจสอบค่าที่คืนกลับมาก่อนใช้งานเสมอ
  • Timezone ที่แตกต่างกัน: strtotime() อาจตีความวันที่แตกต่างกันขึ้นอยู่กับ timezone ที่ตั้งค่าไว้ใน PHP ควรตั้งค่า timezone ให้ถูกต้องก่อนใช้งาน (ดูหัวข้อถัดไป)

การจัดการ Timezone

การจัดการ Timezone เป็นสิ่งสำคัญในการทำงานกับวันที่และเวลา โดยเฉพาะอย่างยิ่งถ้า application ของคุณมีผู้ใช้จากทั่วโลก PHP มีฟังก์ชัน date_default_timezone_set() ที่ใช้ในการตั้งค่า timezone

ตัวอย่าง:

<?php
// ตั้งค่า timezone เป็น Asia/Bangkok
date_default_timezone_set("Asia/Bangkok");

// แสดงวันที่และเวลาปัจจุบัน
echo date("Y-m-d H:i:s");
?>

ข้อควรจำ: ควรตั้งค่า timezone เพียงครั้งเดียวใน application ของคุณ โดยปกติจะตั้งค่าในไฟล์ configuration หรือไฟล์หลักของ application

รายการ Timezone ที่รองรับ: สามารถดูรายการ timezone ที่รองรับได้ที่ PHP Manual

สรุป

ในบทนี้ เราได้เรียนรู้ฟังก์ชันพื้นฐานในการจัดการกับวันที่และเวลาใน PHP ได้แก่ date(), time(), และ strtotime() นอกจากนี้ เรายังได้เรียนรู้เกี่ยวกับการจัดการ timezone ซึ่งเป็นสิ่งสำคัญในการพัฒนา application ที่รองรับผู้ใช้จากทั่วโลก ในบทถัดไป เราจะลงลึกไปอีกขั้นด้วยการใช้ DateTime object ซึ่งเป็นวิธีที่ object-oriented มากกว่าในการจัดการกับวันที่และเวลา

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る