ฟังก์ชั่น PHP Date () & Time: วิธีรับการประทับเวลาปัจจุบัน

⚡ สรุปอย่างชาญฉลาด

ฟังก์ชัน `date()` ใน PHP จะจัดรูปแบบไทม์สแตมป์ให้เป็นวันที่และเวลาที่อ่านง่าย บทความนี้จะอธิบายไวยากรณ์ของวันที่ ไทม์สแตมป์แบบ Unix วิธีการแสดงรายการและตั้งค่าเขตเวลา ฟังก์ชัน `mktime` สำหรับสร้างไทม์สแตมป์ และข้อมูลอ้างอิงฉบับสมบูรณ์ของอักขระรูปแบบเวลา วัน เดือน และปี

  • 📅 ฟังก์ชัน date() ทำอะไร: ฟังก์ชัน date จะแปลงค่าเวลาให้เป็นสตริงที่มีรูปแบบ โดยใช้ตัวอักษร เช่น Y, m และ d แทนปี เดือน และวัน ตามลำดับ
  • ⏱️ เวลาประทับของระบบ Unix: ค่า timestamp คือจำนวนวินาทีตั้งแต่ 1 มกราคม 1970 GMT และฟังก์ชัน time() จะส่งคืนค่าปัจจุบัน
  • 🌍 โซนเวลา: ฟังก์ชัน date_default_timezone_set จะเปลี่ยนเขตเวลาที่ใช้งานอยู่ และฟังก์ชัน DateTimeZone::listIdentifiers จะแสดงรายการเขตเวลาที่รองรับทั้งหมด
  • 🔧 มกไทม์: ฟังก์ชัน mktime สร้างการประทับเวลาจากชั่วโมง นาที วินาที เดือน วัน และปีที่ระบุ
  • 🔤 รูปแบบตัวอักษร: ตัวอักษรเดี่ยวควบคุมการแสดงผล เช่น H สำหรับเวลาแบบ 24 ชั่วโมง l สำหรับชื่อวันในสัปดาห์ และ F สำหรับชื่อเดือน
  • 📐 ตารางอ้างอิง: ตารางที่จัดกลุ่มไว้จะแสดงอักขระรูปแบบเวลา วัน เดือน และปี พร้อมตัวอย่างที่สามารถใช้งานได้สำหรับแต่ละรูปแบบ
  • 🤖 AI ช่วยเหลือ: เครื่องมือ AI สามารถสร้างรูปแบบวันที่และรหัสความแตกต่าง และช่วยแก้ไขข้อผิดพลาดเกี่ยวกับเขตเวลาที่ทำให้สับสนได้

วันที่ PHP () ฟังก์ชัน

วันที่ PHP () ฟังก์ชัน

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

ไวยากรณ์วันที่ PHP และตัวอย่าง

ฟังก์ชัน `date()` ของ PHP มีไวยากรณ์พื้นฐานดังต่อไปนี้

<?php
date(format,[timestamp]);
?>

ที่นี่

  • “date(…)” คือฟังก์ชันที่ส่งคืนค่าเวลาปัจจุบันที่จัดรูปแบบแล้ว PHP บนเซิร์ฟเวอร์
  • "รูปแบบ" คือรูปแบบทั่วไปที่เราต้องการให้ผลลัพธ์ออกมาเป็นแบบนั้น ตัวอย่างเช่น:
    • “Ymd” คือรูปแบบวันที่ของ PHP ซึ่งก็คือ YYYY-MM-DD
    • “Y” เพื่อแสดงปีปัจจุบัน
  • “[timestamp]” เป็นตัวเลือกเสริม หากไม่ได้ระบุ timestamp ไว้ PHP จะใช้ข้อมูลวันที่และเวลาปัจจุบันบนเซิร์ฟเวอร์

เรามาดูตัวอย่างพื้นฐานที่แสดงปีปัจจุบันกัน

<?php

echo date("Y");

?>

Output:

2026

การประทับเวลาคืออะไร?

ใน PHP ค่าไทม์สแตมป์คือค่าตัวเลขในหน่วยวินาทีระหว่างเวลาปัจจุบันกับค่าที่ 1st มกราคม 1970 00:00:00 ตามเวลามาตรฐานกรีนวิช (GMT)

ค่าที่ส่งคืนโดยฟังก์ชันเวลาที่ขึ้นอยู่กับเขตเวลาเริ่มต้น

เขตเวลาเริ่มต้นจะถูกตั้งค่าไว้ในไฟล์ php.ini นอกจากนี้ยังสามารถตั้งค่าได้โดยใช้ฟังก์ชัน date_default_timezone_set

โค้ดด้านล่างแสดงเวลาปัจจุบัน

<?php

echo time();

?>

สมมติว่าคุณได้บันทึกไฟล์ timestamp.php ไว้ในโฟลเดอร์ phptuts แล้ว ให้เข้าไปที่โฟลเดอร์นั้น URL http://localhost/phptuts/timestamp.php

TimeStamp

หมายเหตุ: ค่าของ timestamp ไม่ใช่ค่าคงที่ มันเปลี่ยนแปลงทุกวินาที

รับรายการตัวระบุโซนเวลาที่มีอยู่

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

<?php

$timezone_identifiers = DateTimeZone::listIdentifiers();

foreach($timezone_identifiers as $key => $list){

echo $list . "<br/>";

}
?>

ที่นี่

  • “$timezone_identifiers = DateTimeZone::listIdentifiers();” เรียกใช้เมธอด static listIdentifiers ของคลาส DateTimeZone เมธอด listIdentifiers จะส่งคืนรายการของตัวระบุที่จะถูกกำหนดให้กับตัวแปร $timezone_identifiers
  • คำสั่ง “foreach{…}” จะวนลูปผ่านอาร์เรย์และพิมพ์ค่าต่างๆ ออกมา

สมมติว่าคุณได้บันทึกไฟล์ list_time_zones.php ไว้ในโฟลเดอร์ phptuts แล้ว ให้เข้าไปที่โฟลเดอร์นั้น URL http://localhost/phptuts/list_time_zones.php

ตัวระบุโซนเวลา

PHP ตั้งค่าเขตเวลาโดยทางโปรแกรม

ฟังก์ชัน date_default_timezone_set ช่วยให้คุณสามารถตั้งค่าเขตเวลาเริ่มต้นจากสคริปต์ PHP

เขตเวลาที่ตั้งไว้จะถูกนำไปใช้กับข้อมูลทั้งหมด ฟังก์ชัน PHP ในสคริปต์ของคุณ มีรูปแบบไวยากรณ์ดังต่อไปนี้

<?php
date_default_timezone_set(string $timezone_identifier);
?>

ที่นี่

  • “date_default_timezone_set()” เป็นฟังก์ชันที่กำหนดเขตเวลาเริ่มต้น
  • “string $timezone_identifier” คือตัวระบุโซนเวลา

สคริปต์ด้านล่างแสดงเวลาตามเขตเวลาเริ่มต้นที่ตั้งไว้ใน php.ini จากนั้นจะเปลี่ยนเขตเวลาเริ่มต้นเป็น Asia/Calcutta และแสดงเวลาอีกครั้ง

<?php
echo "The time in " . date_default_timezone_get() . " is " . date("H:i:s");

date_default_timezone_set("Asia/Calcutta");
echo "The time in " . date_default_timezone_get() . " is " . date("H:i:s");
?>

สมมติว่าคุณได้บันทึกไฟล์ set_time_zone.php ไว้ในโฟลเดอร์ phptuts แล้ว ให้เข้าไปที่โฟลเดอร์นั้น URL http://localhost/phptuts/set_time_zone.php

PHP ตั้งค่าเขตเวลาโดยทางโปรแกรม

ฟังก์ชั่น PHP Mktime

ฟังก์ชัน mktime ส่งคืนการประทับเวลาใน a ยูนิกซ์ จัดรูปแบบ

มีรูปแบบประโยคดังนี้

<?php
mktime(hour, minute, second, month, day, year, is_dst);
?>

ที่นี่

  • “mktime(…)” เป็นฟังก์ชันการประทับเวลาของ PHP
  • คำว่า “ชั่วโมง” เป็นตัวเลือกเสริม สามารถระบุเป็นตัวเลขของชั่วโมงได้
  • คำว่า “นาที” เป็นตัวเลือกเสริม สามารถระบุเป็นจำนวนนาทีได้
  • คำว่า “วินาที” เป็นตัวเลือกเสริม สามารถระบุเป็นจำนวนวินาทีได้
  • คำว่า “เดือน” เป็นตัวเลือก สามารถระบุเป็นหมายเลขเดือนได้
  • คำว่า “วัน” เป็นตัวเลือกเสริม สามารถระบุเป็นตัวเลขของวันได้
  • คำว่า “ปี” เป็นตัวเลือก สามารถระบุเป็นตัวเลขของปีได้
  • “is_dst” เป็นพารามิเตอร์เสริม ใช้สำหรับตรวจสอบว่ามีการปรับเวลาตามฤดูกาล (Daylight Saving Time หรือ DST) หรือไม่ โดยค่า 1 หมายถึงมี DST ค่า 0 หมายถึงไม่มี DST และค่า -1 หมายถึงไม่ทราบข้อมูล

ต่อไปนี้เราจะมาดูตัวอย่างการสร้างไทม์สแตมป์สำหรับวันที่ 13/10/2025 โดยใช้ฟังก์ชัน mktime กัน

<?php

echo mktime(0,0,0,10,13,2025);

?>

ที่นี่

  • “0,0,0” คือ ชั่วโมง นาที และวินาที ตามลำดับ
  • “10” คือเดือนของปี
  • “13” คือวันของเดือน
  • “2025” เป็นปี

Output:

1760328000

เอกสารอ้างอิงรูปแบบวันที่ PHP

ตารางด้านล่างแสดงอักขระรูปแบบทั่วไปที่ใช้เมื่อทำงานกับฟังก์ชันวันที่ของ PHP

พารามิเตอร์เวลา

พารามิเตอร์ Descriptไอออน ตัวอย่าง
"R" ส่งกลับวันที่และเวลาแบบเต็ม
<?php
echo date("r");
?>
“เอ”, “เอ” ส่งคืนว่าเวลาปัจจุบันคือ am หรือ pm, AM หรือ PM ตามลำดับ
<?php
echo date("a");
echo date("A");
?>
“ก”, “จี” ส่งกลับชั่วโมงโดยไม่มีศูนย์นำหน้า [1 ถึง 12], [0 ถึง 23] ตามลำดับ
<?php
echo date("g");
echo date("G");
?>
“ฮ”, “เอช” ส่งคืนค่าชั่วโมงโดยมีเลขศูนย์นำหน้า [01 ถึง 12] และ [00 ถึง 23] ตามลำดับ
<?php
echo date("h");
echo date("H");
?>
"เป็น" ส่งกลับนาที/วินาทีโดยมีศูนย์นำหน้า [00 ถึง 59]
<?php
echo date("i");
echo date("s");
?>

พารามิเตอร์วัน

พารามิเตอร์ Descriptไอออน ตัวอย่าง
“ ง” ส่งกลับวันของเดือนโดยมีศูนย์นำหน้า [01 ถึง 31]
<?php
echo date("d");
?>
“เจ” ส่งกลับวันของเดือนโดยไม่มีศูนย์นำหน้า [1 ถึง 31]
<?php
echo date("j");
?>
“ D” ส่งคืนอักษร 3 ตัวแรกของชื่อวัน [อาทิตย์ถึงเสาร์]
<?php
echo date("D");
?>
"L" ส่งคืนชื่อวันในสัปดาห์ [วันอาทิตย์ถึงวันเสาร์]
<?php
echo date("l");
?>
“ว” ส่งคืนวันในสัปดาห์โดยไม่มีเลขศูนย์นำหน้า [0 ถึง 6]; วันอาทิตย์แทนด้วยเลขศูนย์ (0) ไปจนถึงวันเสาร์แทนด้วยเลขหก (6)
<?php
echo date("w");
?>
“ซี” ส่งกลับวันของปีโดยไม่ต้องเว้นวรรคนำ [0 ถึง 365]
<?php
echo date("z");
?>

พารามิเตอร์เดือน

พารามิเตอร์ Descriptไอออน ตัวอย่าง
“m” ส่งกลับตัวเลขเดือนโดยมีศูนย์นำหน้า [01 ถึง 12]
<?php
echo date("m");
?>
“ n” ส่งกลับตัวเลขเดือนโดยไม่มีศูนย์นำหน้า [1 ถึง 12]
<?php
echo date("n");
?>
"ม" ส่งกลับตัวอักษร 3 ตัวแรกของชื่อเดือน [ม.ค. ถึง ธ.ค. ]
<?php
echo date("M");
?>
"F" ส่งกลับชื่อเดือน [มกราคมถึงธันวาคม]
<?php
echo date("F");
?>
“ t” ส่งกลับจำนวนวันในหนึ่งเดือน [28 ถึง 31]
<?php
echo date("t");
?>

พารามิเตอร์ปี

พารามิเตอร์ Descriptไอออน ตัวอย่าง
"L" ส่งคืนค่า 1 หากเป็นปีอธิกสุรทิน และส่งคืนค่า 0 หากไม่ใช่ปีอธิกสุรทิน
<?php
echo date("L");
?>
"Y" ส่งคืนรูปแบบปีสี่หลัก
<?php
echo date("Y");
?>
"Y" ส่งคืนปีในรูปแบบตัวเลขสองหลัก (00 ถึง 99)
<?php
echo date("y");
?>

คำถามที่พบบ่อย

`date()` เป็นฟังก์ชันเชิงขั้นตอนอย่างง่ายที่ใช้จัดรูปแบบการประทับเวลา ส่วนคลาส `DateTime` นั้นเป็นคลาสเชิงวัตถุและรองรับการคำนวณทางคณิตศาสตร์ การเปรียบเทียบ เขตเวลา และความไม่เปลี่ยนแปลง ทำให้เหมาะสมกว่าสำหรับตรรกะเกี่ยวกับวันที่ที่ซับซ้อนในแอปพลิเคชันขนาดใหญ่

ใช้ฟังก์ชัน strtotime() ซึ่งอ่านรูปแบบเช่น '2025-10-13' หรือ 'next' Mondayและส่งคืนค่าไทม์สแตมป์แบบ Unix สำหรับการแยกวิเคราะห์รูปแบบที่ทราบอย่างเคร่งครัด ฟังก์ชัน DateTime::createFromFormat จะปลอดภัยกว่า เนื่องจากจะล้มเหลวอย่างชัดเจนเมื่อป้อนข้อมูลไม่ถูกต้อง

สร้างอ็อบเจ็กต์ DateTime สองตัว แล้วเรียกใช้เมธอด diff() ซึ่งจะส่งคืนอ็อบเจ็กต์ DateInterval จากนั้นคุณสามารถอ่านค่าเป็นวัน เดือน หรือปีได้ เช่น $start->diff($end)->days เพื่อรับจำนวนวันทั้งหมดระหว่างวันที่ทั้งสอง

ใช่แล้ว อธิบายรูปแบบข้อมูลนำเข้าและข้อมูลส่งออก แล้ว AI จะสามารถสร้างโค้ด date(), DateTime หรือ strtotime ได้ รวมถึงการเพิ่มช่วงเวลาหรือการแปลงเขตเวลา ทดสอบกับกรณีพิเศษ เช่น ปีอธิกสุรทินและสิ้นเดือน

ใช่แล้ว AI สามารถตรวจจับการขาดการเรียกใช้ date_default_timezone_set, ความไม่ตรงกันของเขตเวลาเซิร์ฟเวอร์กับเขตเวลาที่แสดง หรือปัญหาเกี่ยวกับเวลาออมแสง จากนั้นจะแนะนำให้ใช้ DateTime โดยระบุเขตเวลาอย่างชัดเจนเพื่อให้การทำงานคาดเดาได้

สรุปโพสต์นี้ด้วย: