ปฏิทินภาษาไทย (Thai Calendar) สามารถแสดงปฏิทินในขอบเขตต่างๆได้ เช่น วัน, สัปดาห์, เดือน, ปี. ปฏิทินนี้สามารถแสดงเป็นภาษาไทยหรือภาษาอื่นๆก็ได้ โดยมันใช้การ setlocale()
ของ PHP สามารถกำหนดให้ใช้ปีเป็นปีพ.ศ. หรือปีค.ศ. ก็ได้ สามารถกำหนดระยะความต่างของปีพ.ศ.กับปีค.ศ.ได้. (ทราบว่าในบางประเทศปีพ.ศ.ไม่ใช่ +543). ตัวปฏิทินสามารถกำหนดวันที่เริ่มต้นของสัปดาห์เป็นวันอื่นๆได้นอกจากวันอาทิตย์ เช่น กำหนดเป็นวันจันทร์, วันอังคาร, ฯลฯ
ดาวน์โหลด หรือติดตั้งผ่าน Composer
อ้างอิงเอกสาร API
License: MIT
การใช้งาน
การใช้งานพื้นฐาน
หากไม่ได้ติดตั้งผ่าน Composer ต้องทำการ include หรือ require ไฟล์ต่างๆเหล่านี้
require dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'Rundiz' . DIRECTORY_SEPARATOR . 'Calendar' . DIRECTORY_SEPARATOR . 'Calendar.php';
require dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'Rundiz' . DIRECTORY_SEPARATOR . 'Calendar' . DIRECTORY_SEPARATOR . 'Generators' . DIRECTORY_SEPARATOR . 'GeneratorInterface.php';
require dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'Rundiz' . DIRECTORY_SEPARATOR . 'Calendar' . DIRECTORY_SEPARATOR . 'Generators' . DIRECTORY_SEPARATOR . 'GeneratorAbstractClass.php';
// ไฟล์ด้านล่างนี้เป็นตัว generator สำหรับสร้าง HTML แสดงปฏิทิน.
// เลือก include/require เพียงแค่อันเดียวก็พอ หรือหากใช้ของคุณเองก็ต้อง include/require ให้ถูกต้อง
require dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'Rundiz' . DIRECTORY_SEPARATOR . 'Calendar' . DIRECTORY_SEPARATOR . 'Generators' . DIRECTORY_SEPARATOR . 'Simple.php';
require dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'Rundiz' . DIRECTORY_SEPARATOR . 'Calendar' . DIRECTORY_SEPARATOR . 'Generators' . DIRECTORY_SEPARATOR . 'Bootstrap3.php';
แสดงปฏิทินด้วยโค้ดต่อไปนี้
$Calendar = new \Rundiz\Calendar\Calendar();
// กำหนด base_url สำหรับลิ้งค์เมื่อกดดูวัน/เดือน/ปี อื่นๆในหน้าเดียวกันได้ถูกต้อง.
$Calendar->base_url = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
// กำหนดวันที่ที่กำลังดูหรือแสดงเพื่อให้ปฏิทินทราบว่ากำลังดูวันที่ใดอยู่.
$Calendar->viewing_date = (isset($_GET['viewdate']) ? strip_tags($_GET['viewdate']) : date('Y-m-d'));
// กำหนดวันแรกของสัปดาห์. คุณสามารถเพิกเฉยไม่ต้องกำหนด property นี้ก็ได้เนื่องจากค่าเดิมของมันคือวันอาทิตย์. กำหนดเป็น 0 สำหรับวันอาทิตย์, 1 สำหรับวันจันทร์, ไปถึง 6 สำหรับวันเสาร์.
$Calendar->first_day_of_week = 1;
// แสดงปฏิทิน.
// อาร์กิวเมนต์แรกเป็นขอบเขตที่จะแสดง เช่น วัน (date), สัปดาห์ (week), เดือน (month), ปี (year).
// อาร์กิวเมนต์ที่สองเป็นชื่อคลาส generator ในกรณีที่จะใช้ generator ที่สร้างเองเพื่อแสดง html แบบกำหนดเอง.
echo $Calendar->display('day');
// เรียกไปยัง clear() เพื่อล้างค่าทั้งหมด เหมาะสำหรับในกรณีที่จะเริ่มต้นใหม่ได้อีกโดยไม่ต้องเริ่ม class ใหม่.
$Calendar->clear();
ใช้ generator อื่น
$Calendar = new \Rundiz\Calendar\Calendar();
$Calendar->base_url = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
$Calendar->viewing_date = (isset($_GET['viewdate']) ? strip_tags($_GET['viewdate']) : date('Y-m-d'));
// เรามี generator ที่ทำไว้ให้แล้ว 2 ตัวสำหรับให้คุณใช้. 1 คือ Simple และ 2 คือ Bootstrap3. ใช้ชื่อคลาสเหล่านี้ในอาร์กิวเมนต์ที่สองของ display().
// ในกรณีที่คุณใช้ generator ของตนเองก็ให้ใส่ชื่อคลาส generator นั้น.
echo $Calendar->display('year', '\\Rundiz\\Calendar\\Generators\\Bootstrap3');
$Calendar->clear();
เหตุการณ์, วันนัดหมาย
การกำหนดเหตุการณ์หรือวันนัดหมายสำหรับปฏิทินในขอบเขตต่างๆจะใช้รูปแบบ array แบบเดียวกันทั้งหมด. ขอให้ดูตัวอย่างต่อไปนี้.
// สมมุติว่าวันนี้คือ 2016-05-02.
$events = array (
array (
'date_from' => '2016-05-02 00:00:00',
'date_to' => '2016-05-03 01:00:00',
'title' => 'Event today to tomorrow +1hr.',
),
array (
'date_from' => '2016-05-02 00:50:00',
'date_to' => '2016-05-04 16:00:00',
'title' => 'Event today to after tomorrow 00:50 to 16:00.',
),
'special_event1' => array (
'date_from' => '2016-05-03 10:00:00',
'date_to' => '2016-05-03 15:00:00',
'title' => 'Event tomorrow with special key name',
),
array (
'date_from' => '2016-05-03 11:00:00',
'date_to' => '2016-05-03 15:00:00',
'title' => 'Event tomorrow 11:00 to 15:00',
),
array (
'date_from' => '2016-05-03 23:40:00',
'date_to' => '2016-05-04 02:30:00',
'title' => 'Event tomorrow to after tomorrow 23:40 to 02:30',
),
array (
'date_from' => '2016-05-04 08:00:00',
'date_to' => '2016-05-04 23:59:00',
'title' => 'Event after tomorrow 08:00 to 23:59',
),
array (
'date_from' => '2016-05-14',
'date_to' => '2016-05-14',
'title' => 'Event next 12 days',
),
array (
'date_from' => '2016-05-28',
'date_to' => '2016-06-02',
'title' => 'Event 28 this month to next 5 days',
),
) ;
คีย์ใน array ที่ชื่อ 'date_from' (วันที่เริ่ม) และ 'date_to' (วันที่สิ้นสุด) นั้นจำเป็นต้องมี, ส่วนคีย์ 'title' นั้นไม่จำเป็นแต่มีเพื่อแสดงชื่อเหตุการณ์เท่านั้น. คุณสามารถเพิ่มคีย์ใน array อื่นๆได้อีกเพื่อใช้ในการแสดงข้อมูล แต่จะต้องสร้าง generator ขึ้นมาเองเพื่อเรียกใช้ข้อมูลผ่านคีย์เหล่านั้น. กำหนดเหตุการณ์ในปฏิทินด้วย setEvents()
method.
$Calendar = new \Rundiz\Calendar\Calendar();
$Calendar->base_url = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
$Calendar->viewing_date = (isset($_GET['viewdate']) ? strip_tags($_GET['viewdate']) : date('Y-m-d'));
$Calendar->setEvents($events);
echo $Calendar->display('month');
$Calendar->clear();
ปรับแต่ง
เปลี่ยนภาษา
คุณสามารถเปลี่ยนไปใช้ภาษาอื่นๆได้โดยการกำหนด locale ผ่านทาง property locale.
$Calendar->locale = array('en_UK.utf8', 'en_UK', 'en');
สำหรับข้อมูลเพิ่มเติมของ locale โปรดดูที่ http://php.net/manual/en/function.setlocale.php
กำหนดวันแรกของสัปดาห์
คุณสามารถกำหนดแสดงวันแรกของสัปดาห์นอกจากวันอาทิตย์ได้โดยกำหนดตัวเลขของวัน (0 = วันอาทิตย์, ไปจนถึง 6 = วันเสาร์) ได้ที่ property first_day_of_week
$Calendar->first_day_of_week = 3;// วันพุธ
ปี พ.ศ.
คุณสามารถกำหนดที่จะใช้หรือไม่ใช้ปีพ.ศ.ได้ และยังกำหนดความต่างระหว่างปีพ.ศ.กับปีค.ศ.ได้
$Calendar->use_buddhist_era = true;// กำหนดเป็น false เพื่อไม่ใช้ปีพ.ศ. กำหนดเป็น true เพื่อใช้.
$Calendar->buddhist_era_offset = 543;
$Calendar->buddhist_era_offset_short = 43;// 2016 = 2559, 16 = 59.
ตารางอ้างอิง property & method
Name | Description | Example |
---|---|---|
Properties | ||
base_url | กำหนด URL สำหรับลิ้งค์กรณีคลิกดูวัน/เดือน/ปีอื่นๆ | $Calendar->base_url = 'http://domain.tld/mycalendar'; |
viewing_date | กำหนดวันที่ที่กำลังดูหรือกำลังทำงาน | $Calendar->viewing_date = '2016-05-03'; |
first_day_of_week | กำหนดวันแรกของสัปดาห์โดยเริ่มจาก 0 คือวันอาทิตย์ ถึง 6 คือวันเสาร์ | $Calendar->first_day_of_week = 1; |
locale | กำหนดภาษา (locale) | $Calendar->locale = array('en_UK.utf8', 'en_UK', 'en'); |
locale_category | หมวดหมู่ของ locale อ้างอิงจาก setlocale() function ของ PHP | $Calendar->locale_category = LC_TIME; |
use_buddhist_era | ใช้ปีพ.ศ.หรือไม่? กำหนดเป็น true เพื่อใช้, false เพื่อไม่ใช้ | $Calendar->use_buddhist_era = true; |
buddhist_era_offset | ความต่างของปีพ.ศ. กับ ค.ศ. แบบเต็ม | $Calendar->buddhist_era_offset = 543; |
buddhist_era_offset_short | ความต่างของปีพ.ศ. กับ ค.ศ. แบบสั้น | $Calendar->buddhist_era_offset_short = 43; |
Methods | ||
clear() | ล้างค่าต่างๆทั้งหมดเพื่อเริ่มต้นใหม่ | $Calendar->clear(); |
display($scope = 'month', $Generator = '\\Rundiz\\Calendar\\Generators\\Simple') | สั่งให้แสดงปฏิทิน โดยคุณต้องใช้ร่วมกับการ echo หรือ print $scope ขอบเขตปฏิทิน เช่น date, week, month, year $Generator คือคลาสสร้าง HTML ปฏิทิน |
$Calendar->display('month', '\\Rundiz\\Calendar\\Generators\\Bootstrap3'); |
getCalendarData($scope = 'month') | สั่งให้สร้างข้อมูลปฏิทินเพื่อนำไปแสดง ปกติแล้วคุณไม่จำเป็นต้องเรียก method นี้ยกเว้นว่าจะนำข้อมูลไปใช้งานอื่นๆ $scope ขอบเขตปฏิทิน เช่น date, week, month, year |
$Calendar->getCalendar('month'); |
getTheDatesInWeek($viewing_date = null) | รับวันที่ทั้งหมดในสัปดาห์นั้น. ข้อมูลที่ได้จะเป็น array ของชุดวันที่ในสัปดาห์. วันที่เริ่มต้นของสัปดาห์จะถูกกำหนดผ่าน property first_day_of_week และวันที่ในสัปดาห์ทั้งหมดจะครอบคลุมวันที่ที่กำลังดูผ่าน property viewing_date หรือผ่าน argument $viewing_date. | $Calendar->getTheDatesInWeek(); |
setEvents($events) | กำหนดเหตุการณ์หรือวันนัดหมาย $events เหตุการณ์หรือวันนัดหมาย โดยเป็นรูปแบบ array ซึ่งตัวอย่างโปรดดูด้านบน. |
$Calendar->setEvents($events); |
weeksInMonth($month, $year, $first_day_of_week = 0) | รับค่าจำนวนสัปดาห์ในเดือนและปีที่กำหนด. $month เลขเดือน $year เลขปี 4 หลัก $first_day_of_week เลขวันแรกของสัปดาห์ |
$Calendar->weeksInMonth('02', '2014', 1); |