ปฏิทินภาษาไทย

ปฏิทินภาษาไทย (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);

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

คุณอาจใช้แท็กHTMLและแอททริบิวต์เหล่านี้: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>