Open source

แปลงวันที่ภาษาไทย ด้วย thaidate() ใน PHP และ Laravel

เผยแพร่
เวลาอ่าน
2 นาที
แท็ก
Laravel, PHP, Package, thaidate

ฟังก์ชัน date() ใน PHP ช่วยให้เราจัด format วันที่ที่เราต้องการแสดงผลได้ แต่ format ที่ออกมาเป็นภาษาอังกฤษเท่านั้น ในบทความนี้จะมาแนะนำ function thaidate() ที่ช่วยให้เราจัด format วันที่ใน PHP ให้เป็นภาษาไทยได้กัน

package ที่เราจะนำมาใช้คือ phattarachai/thaidate

composer require phattarachai/thaidate

package นี้จะเพิ่มฟังก์ชัน thaidate() ให้เราใช้ได้ โดย parameter ที่รับ เหมือนกัน function date() ใน PHP

thaidate('l j F Y', '2021-02-25');
// พฤหัสบดี 25 กุมภาพันธ์ 2564

Format ที่รับใช้รูปแบบเดียวกันกับ Date format ใน PHP

Parameter ตัวที่สองเราสามารถส่งเป็น String แบบเดียวที่ส่งได้กับ function <a href="https://www.php.net/manual/en/function.strtotime.php">strtotime()</a> เราจึงสามารถส่งเป็น string ที่สามารถแปลงเป็นวันที่ได้เช่น

thaidate('l j F Y', 'now');
thaidate('l j F Y', 'next week');
thaidate('l j F Y', 'next month');
thaidate('l j F Y', '-3 days');
thaidate('l j F Y', 'yesterday');
thaidate('l j F Y', 'tomorrow');

ใช้ thaidate() กับ Laravel Carbon

ใน Laravel จะมีการใช้ Carbon Package ในการจัดการกับวันที่อยู่แล้ว package นี้ก็ได้เพิ่ม method thaidate() ให้แก่ Laravel Carbon instance เพื่อให้เรียกใช้งานได้ง่ายขึ้น

use Illuminate\Support\Carbon;

Carbon::parse('2021-02-25')->thaidate('D j M y')
// พฤ. 25 ก.พ. 64

ในเบื้องหลัง package นี้ใช้ความสามารถของ Laravel macro ในการเพิ่ม functionality ให้แก่ คลาส Carbon ใน Laravel

นั่นแปลว่าเราสามารถใช้ method thaidate() ใน Eloquent Model attributes ที่มีการ cast เป็น datetime ได้โดยตรงเช่นกัน

use Illuminate\Database\Eloquent\Model;

class Post extends Model 
{
    protected $dates = ['published_date'];
}

$post->published_date->thaidate('D j M y')
// พฤ. 25 ก.พ. 64

ดูรายละเอียดเพิ่มเติมได้ที่ Github Repository