หลาย ๆ คน
คงจะเคยเจอปัญหาและหลายคนอาจจะกำลังมีปัญหาเกี่ยวกับเรื่องวันที่ไม่ว่าจะเป็นการเขียนโปรแกรมด้วยภาษาอะไร
ก็ต้องเจอปัญหาเดียวกันนี้ทั้งนั้น ถ้ารู้เทคนิคและวิธีการก็จะผ่านมันไปได้ แต่ละคนก็จะมีเทคนิคที่แตกต่างกันออกไป ซึ่งทั้งหมดนี้สามารถค้นหาได้จากอินเตอร์เน็ต
บทความนี้จะพูดถึงการแปลงวันที่จาก ค.ศ. เป็น
พ.ศ. เอาแบบง่าย ๆ นี่หล่ะ ถ้าใครไม่เข้าใจอะไรตรงไหน ก็อย่าเก็บเอาไว้คนเดียว
ตัวอย่างโค้ด เป็นดังนี้ครับ
(สามารถเอาไปไว้ใช้งานได้เลย)
<?
$thaiweek=array("วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัส","วันศุกร์","วันเสาร์");
$thaimonth=array("มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม"," มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม");
echo
$thaiweek[date("w")] ,"ที่",date("
j "), $thaimonth[date(" m ")-1] , " พ.ศ. ",date(" Y ")+543;
// ผลลัพธ์จะได้ดังนี้ครับ วันเสาร์ที่ 26 กันยายน พ.ศ. 2552
?>
อธิบายโค้ดกันเล็กน้อย
เพื่อความเข้าใจที่ถูกต้อง ตรงกัน
$thaiweek เป็นตัวแปรที่ใช้เก็บวันครับ จะเก็บแบบ array()
ข้อมูลแรกจะเริ่มจากศูนย์(0) เสมอ
หากต้องการทดสอบว่า array() ตัวไหนเก็บค่าอะไรไว้ ก็ลอง Echo() ดูกันได้ ดังนี้
echo $thaiweek[0]; จะได้ผล =
วันอาทิตย์
echo $thaiweek[1]; จะได้ผล =
วันจันทร์
echo $thaiweek[2]; จะได้ผล =
วันอังคาร
echo $thaiweek[3]; จะได้ผล = วันพุธ
echo $thaiweek[4]; จะได้ผล = วันพฤหัส
echo $thaiweek[5]; จะได้ผล = วันศุกร์
echo $thaiweek[6]; จะได้ผล = วันเสาร์
หากต้องการรู้ว่า
เราส่งค่าอะไรเข้าไปในฟังก์ชั่น thaiweek ก็ให้ลอง Echo
date("w"); ดูครับ
สำหรับตัวอย่างนี้จะได้ค่า 6 จากโค้ด $thaiweek[date("w")] จะเป็นการส่งค่า คือ 6 เข้าไปเช็ค
ในฟังก์ชั่น thaiweek ก็จะได้ค่าเป็น วันเสาร์
ส่วนฟังก์ชั่น thaimonth นั่นก็มีหลักการทำงานเช่นเดียวกันกับฟังก์ชั่น thaiweek ครับ
สิ่งที่แตกต่างก็จะอยู่ที่ตอนส่งค่าเข้าไปตรวจเช็ค
$thaimonth[date(" m ")-1] จะสังเกตุเห็นว่า
จะมี -1 อยู่ด้วย
อันนี้ก็เพราะว่าฟังก์ชั่น date("
m ") จะได้ค่าตัวเลขเดือนออกมา ในที่นี้คือ 09
(เดือนกันยายน) ซึ่งบางคนอาจจะบอกว่า
"อ้าว ไม่ก็ถูกแล้วนี่
ทำไมไม่ส่งค่าเข้าไปตรง ๆ เลยหล่ะ"
ถ้าส่งค่า 9 เข้าไปเช็ค ผลที่ได้จะเป็นเดือนตุลาคม
เพราะอะไรนะหรอ
ก็เพราะว่าในตัวแปร array() ที่ชื่อว่า thaimonth() นั้น
ข้อมูลแรกมันจะเริ่มต้นที่ศูนย์ (0)
จึงเป็นเหตุที่เราต้องมีการ -1 เข้าไป เพื่อให้ได้ผลลัพธ์ที่ถูกต้องนั่นเอง
ส่วนโค้ดตรงส่วน date(" Y
")+543; นั้น ก็อธิบายได้ว่า
เมื่อเราลอง Echo date(" Y
") ค่าที่ได้จะเป็นปี ค.ศ. นะครับ
ซึ่งเราไม่ต้องการครับ
และจากการคำนวณ ปี ค.ศ. กับปี พ.ศ.
นั้นจะห่างกันอยู่ 543 ปี
จึงเป็นที่มาของการ +543 เข้าไปในโค้ดอย่างที่เห็นครับ จะได้เป็น 2009+543 = 2552 ตามความต้องการ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น