thaidate คือชุดฟังก์ชั่นต่างๆที่ใช้ในการแสดงผลวันที่ภาษาไทย โดยฟังก์ชั่นที่สร้างขึ้นมาให้ใช้นี้จะอยู่บนพื้นฐานของฟังก์ชั่นเดิมๆของ PHP เช่น date()
, strftime()
, IntlDateFormatter()
.
Download หรือติดตั้งผ่าน Composer
อ้างอิง เอกสาร API
License: MIT
การใช้งาน
ให้ทำการ include Rundiz/Thaidate/thaidate-functions.php และ Rundiz/Thaidate/Thaidate.php แล้วเขียนโดยใช้ parameter เหมือนฟังก์ชั่น, คลาสเดิมของ PHP รวมถึงรูปแบบของวันที่ด้วยเช่นกัน.
<?php
include_once('Rundiz/Thaidate/Thaidate.php');
include_once('Rundiz/Thaidate/thaidate-functions.php');
echo thaidate('วันlที่ j F พ.ศ.Y เวลาH:i:s'); //ผลลัพธ์ วันพฤหัสบดีที่ 12 พฤศจิกายน พ.ศ.2558 เวลา18:55:29
echo sprintf(thaistrftime('%%s%A%%s %d %B %%s%Y %%s%H:%M:%S'), 'วัน', 'ที่', 'พ.ศ.', 'เวลา');
// ผลลัพธ์ วันพฤหัสบดีที่ 12 พฤศจิกายน พ.ศ.2558 เวลา18:56:06
echo sprintf(intlDate('cccc\'%1$s\' d MMMM Gyyyy \'%2$s\'H:mm:ss'), 'ที่', 'เวลา');
// ผลลัพธ์ วันพฤหัสบดีที่ 12 พฤศจิกายน พ.ศ.2558 เวลา18:56:06
?>
thaidate
thaidate(string $format [, int $timestamp = '' [, bool $buddhist_era = true]])
parameter:
ค่าที่หนึ่งและสอง ให้อ้างอิงตาม php date()
ค่าที่สามคือปีพ.ศ. เป็น boolean (true
, false
) ถ้าไม่กำหนดจะเป็น true
คือแปลงเป็นปีพ.ศ. ถ้ากำหนดเป็น false
จะไม่แปลง คือเป็นปี ค.ศ.
thaistrftime
thaistrftime(string $format [, int $timestamp = '' [, bool $buddhist_era = true [, array|string $locale = 'th']]])
strftime()
หลักของ PHP ประกาศเลิกใช้งานแล้วตั้งแต่ PHP 8.1.0 ดังนั้นฟังก์ชั่น thaistrftime()
ถึงจะยังใช้งานได้อยู่แต่ก็อาจจะถูกปรับไปใช้ของใหม่คือฟังก์ชั่น intlDate()
ให้โดยอัตโนมัติ (ถ้ามีการติดตั้งคลาส IntlDateFormatter()
เอาไว้) แต่ว่าผลลัพธ์ที่ได้จะไม่เหมือนเดิม 100% ดังนั้นจึงแนะนำให้ใช้ของใหม่ไปเลยจะดีกว่า. ส่วนผู้ใช้ของเดิมมาก่อนแนะนำให้ตรวจสอบผลลัพธ์และรูปแบบวันที่ให้ถูกต้อง หรือเปลี่ยนไปใช้ของใหม่.
parameter:
ค่าที่หนึ่งและสอง ให้อ้างอิงตาม php strftime()
ค่าที่สามคือปีพ.ศ. เป็น boolean (true
, false
) ถ้าไม่กำหนดจะเป็น true
คือแปลงเป็นปีพ.ศ. ถ้ากำหนดเป็น false
จะไม่แปลง คือเป็นปี ค.ศ.
ค่าที่สี่คือรหัสภาษา (locale) เป็น string หรือ array ซึ่งบาง server อาจใช้แตกต่างกันไป โปรดตรวจสอบและกำหนดด้วยตัวเอง
intlDate
intlDate(string $format [, int $timestamp = '' [, bool $buddhist_era = true [, array|string $locale = 'th']]])
parameter:
ค่าที่หนึ่ง $format
ให้อ้างอิงตาม IntlDateFormatter::setPattern()
โดยจะใช้ pattern ของวันที่ตามเอกสารของ ICU.
ค่าที่สอง $timestamp
คือ unix timestamp หรือปล่อยว่างไว้.
ค่าที่สามคือปีพ.ศ. เป็น boolean (true, false) ถ้าไม่กำหนดจะเป็น true คือแปลงเป็นปีพ.ศ. ถ้ากำหนดเป็น false จะไม่แปลง คือเป็นปี ค.ศ.
ค่าที่สี่คือรหัสภาษา (locale) เป็น string หรือ array ซึ่งบาง server อาจใช้แตกต่างกันไป โปรดตรวจสอบและกำหนดด้วยตัวเอง