Skip to content

calendar ปฏิทิน กับ Python

สวัสดีผู้อ่านทุกท่านครับ ผู้อ่านเขียนโปรแกรมบนภาษา Python กันมาแล้ว ไม่ว่าจะเป็นเรื่องวันและเวลา แต่ถ้าเราต้องการสร้างปฏิทินหรือเขียนโปรแกรมที่เกี่ยวข้องกับปฏิทิน เราสามารถใช้ไลบรารีมาตรฐานที่มากับ Python ได้ ไลบรารีนั้นมีชื่อว่า calendar

เนื่องจากไลบรารี calendar เป็นไลบรารีมาตรฐานของ Python มีรายละเอียดที่ปลีกย่อยมากมาย ผมจึงจะขอนำเสนอการใช้งานคำสั่งในไลบรารีนี้ที่ใช้งานบ่อยครับ

ในการใช้งานไลบรารี calendar ต้อง import เข้ามาทุกครั้ง ดังนี้

import calendar

คำสั่งแสดงปฏิทินทั้งปี

มีลักษณะคำสั่งดังนี้

calendar.prcal(ปี ค.ศ. ที่ต้องการ)

ตัวอย่างการใช้งาน

import calendar
print(calendar.prcal(2015))

ผลลัพธ์


คำสั่งแสดงปฏิทินเฉพาะเดือนที่กำหนด

calendar.prmonth(ปี ค.ศ. ที่ต้องการ , เดือนที่ต้องการ)

หรือจะใช้อีกคำสั่งคืนผลลัพธ์ออกมาเป็นข้อความ string หลายบรรทัด

calendar.month(ปี ค.ศ. ที่ต้องการ , เดือนที่ต้องการ)

ตัวอย่างการใช้งาน

import calendar
print(calendar.prmonth(2015, 3))
print(calendar.month(2015, 3))

ผลลัพธ์


 

คำสั่งเช็คว่าวันที่กำหนดเป็นวันที่เท่าไรในสัปดาห์นั้น
มีคำสั่งดังนี้

calendar.weekday(ปี ค.ศ. ที่ต้องการ , เดือนที่ต้องการ, วันที่)

ในภาษา Python คำสั่งนี้จะมีเลขระหว่าง 0 - 6 โดยค่าเบื้องต้น 0 เป็นวันจัทร์และ 6 เป็นวันอาทิตย์
มีลักษณะการใช้งานตามตัวอย่างดังนี้

import calendar
print(calendar.weekday(2015, 3, 14))

ผลลัพธ์
5
แสดงว่า วันที่ 14 เดือนมีนาคม ค.ศ. 2015 นี้เป็นวันเสาร์ครับ


คำสั่งนับจำนวนสัปดาห์และจำนวนวันในเดือนที่กำหนด
เราสามารถนับจำนวนสัปดาห์และจำนวนวันในเดือนที่กำหนดได้โดยจะคืนค่ามาเป็น tuple ด้วยคำสั่ง

calendar.monthrange(ปี ค.ศ. ที่ต้องการ , เดือนที่ต้องการ)

ตัวอย่างการใช้งาน

import calendar
print(calendar.monthrange(2015, 3))

ผลลัพธ์
(6, 31)
แสดงว่า เดือนมีนาคม ค.ศ. 2015 มี 6 สัปดาห์ มี 31 วัน


คำสั่งแสดงปฏิทินของเดือนเป็น matrix

แสดงปฏิทินในเดือนที่กำหนด โดยค่าจะออกมาเป็น matrix โดยแถวจะเรียงตามสัปดาห์ และเรียงตามวันทั้ง 7 วัน

calendar.monthcalendar(ปี ค.ศ. ที่ต้องการ, เดือนที่ต้องการ)

ตัวอย่างการใช้งาน

import calendar
print(calendar.monthcalendar(2015, 3))

ผลลัพธ์

[[0, 0, 0, 0, 0, 0, 1], [2, 3, 4, 5, 6, 7, 8], [9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19, 20, 21, 22], [23, 24, 25, 26, 27, 28, 29], [30, 31, 0, 0, 0, 0, 0]]

คำสั่งสร้างปฏิทินเป็นโค้ด HTML
ไลบรารี calendar สามารถสร้างปฏิทินออกมาเป็นโค้ด HTML ได้ โดยใช้คำสั่ง

calendar.HTMLCalendar()

สามารถใช้งานคำสั่งได้ตามตัวอย่างดังนี้

import calendar
c = calendar.HTMLCalendar()
print(c.formatmonth(2015, 3))

ผลลัพธ์

<table border="0" cellpadding="0" cellspacing="0" class="month">
<tr><th colspan="7" class="month">March 2015</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="sun">1</td></tr>
<tr><td class="mon">2</td><td class="tue">3</td><td class="wed">4</td><td class="thu">5</td><td class="fri">6</td><td class="sat">7</td><td class="sun">8</td></tr>
<tr><td class="mon">9</td><td class="tue">10</td><td class="wed">11</td><td class="thu">12</td><td class="fri">13</td><td class="sat">14</td><td class="sun">15</td></tr>
<tr><td class="mon">16</td><td class="tue">17</td><td class="wed">18</td><td class="thu">19</td><td class="fri">20</td><td class="sat">21</td><td class="sun">22</td></tr>
<tr><td class="mon">23</td><td class="tue">24</td><td class="wed">25</td><td class="thu">26</td><td class="fri">27</td><td class="sat">28</td><td class="sun">29</td></tr>
<tr><td class="mon">30</td><td class="tue">31</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
</table>

แสดงผลลัพธ์ในหน้าเว็บจะเป็น

March 2015
Mon Tue Wed Thu Fri Sat Sun
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

อ่านรายละเอียดปลีกย่อยของไลบรารี calendar ของ Python ได้ที่ https://docs.python.org/3/library/calendar.html
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

ใส่ความเห็น

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