Python โมดูลปฏิทินพร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
โมดูลปฏิทินใน Python โปรแกรมนี้สร้างปฏิทินข้อความและ HTML โดยใช้คลาส TextCalendar และ HTMLCalendar โดยจะคำนวณวันที่ตามวัน เดือน และปี และให้คุณปรับแต่งวันเริ่มต้นของสัปดาห์สำหรับแต่ละเดือนได้

การขอ โมดูลปฏิทินใน Python มีคลาสปฏิทินที่อนุญาตให้คำนวณงานต่างๆ โดยอิงจากวันที่ เดือน และปี นอกจากนั้นแล้ว... ปฏิทินข้อความ และ ปฏิทิน HTML ชั้นเรียนใน Python ให้คุณแก้ไขปฏิทินและใช้งานได้ตามความต้องการของคุณ มาดูกันว่าเราจะทำอะไรได้บ้าง Python ปฏิทิน.
โมดูลปฏิทินคืออะไรใน Python?
การขอ โมดูลปฏิทิน เป็นส่วนหนึ่งของ Python เป็นไลบรารีมาตรฐาน จึงสามารถใช้งานได้โดยไม่ต้องติดตั้ง มันรวบรวมคลาสและฟังก์ชันช่วยเหลือหลายอย่างที่ใช้สร้างปฏิทินและตอบคำถามเกี่ยวกับวันที่ทั่วไป เช่น วันที่นั้นตรงกับวันใดในสัปดาห์ หรือหนึ่งเดือนมีกี่วัน
โมดูลนี้ประกอบด้วยคลาสหลักห้าคลาส:
- ปฏิทิน เป็นคลาสพื้นฐานที่ให้ข้อมูลซึ่งใช้ในการสร้างปฏิทินอื่นๆ
- ปฏิทินข้อความ สร้างปฏิทินข้อความธรรมดาสำหรับหนึ่งเดือนหรือทั้งปี
- ปฏิทิน HTML สร้างปฏิทินในรูปแบบตาราง HTML สำหรับหน้าเว็บ
- ปฏิทินข้อความท้องถิ่น เป็นปฏิทินข้อความที่ใช้ชื่อวันและเดือนของสถานที่ที่เลือกไว้
- ปฏิทิน HTML ท้องถิ่น คือรูปแบบ HTML ที่เคารพภาษาท้องถิ่นที่เลือกไว้
โดยปกติแล้ว สัปดาห์ตามปฏิทินจะเริ่มต้นในวันที่... Mondayตามธรรมเนียมของยุโรป คุณสามารถเปลี่ยนวันแรกได้โดยใช้ค่าคงที่ เช่น calendar.SUNDAY ดังตัวอย่างด้านล่าง
วิธีการพิมพ์ปฏิทินข้อความในรูปแบบต่างๆ Python
ขั้นตอน 1) เรียกใช้รหัส
- Code บรรทัดที่ 1: เราเริ่มต้นด้วยคำสั่ง “import calendar” ซึ่งจะนำเข้าคลาสทั้งหมดของโมดูลนี้
- Code บรรทัดที่ 3: c= calendar.TextCalendar(calendar.SUNDAY) บอกให้ตัวแปลภาษาสร้างปฏิทินข้อความ โดยเริ่มต้นเดือนด้วยวันอาทิตย์ Pythonคุณสามารถจัดรูปแบบปฏิทินได้ตามต้องการและเปลี่ยนวันที่เริ่มต้นเดือนได้
- Code บรรทัดที่ 4: str= c.formatmonth(2025,1) สร้างปฏิทินสำหรับปี 2025 เดือนที่ 1 – มกราคม
- Code บรรทัดที่ 5: คำสั่ง print str จะแสดงผลลัพธ์ออกมา
ลองเปลี่ยนค่าจากวันอาทิตย์เป็นวันพฤหัสบดีอย่างรวดเร็ว แล้วตรวจสอบผลลัพธ์กันดู
วิธีการพิมพ์ปฏิทิน HTML Python
ขั้นตอน 2) นอกจากนี้ คุณยังสามารถพิมพ์ปฏิทินในรูปแบบ HTML ได้ คุณสมบัตินี้มีประโยชน์สำหรับนักพัฒนาที่ต้องการเปลี่ยนแปลงรูปลักษณ์และรูปแบบของปฏิทิน
วิธีวนซ้ำตามวันต่างๆ ในหนึ่งเดือน
ขั้นตอน 3) ลูป ตลอดระยะเวลาของเดือนโดยใช้ c.itermonthdays (2025,4); มันจะดึงจำนวนวันทั้งหมดของเดือนนั้นออกมา
- เมื่อคุณรันโค้ดเพื่อหาจำนวนวันทั้งหมดของเดือนใดเดือนหนึ่ง เช่น "เมษายน" คุณจะได้ผลลัพธ์เป็น 30 วัน แต่คุณอาจเห็นเลขศูนย์ปรากฏอยู่ด้วยทั้งในตอนต้นและบางครั้งในตอนท้าย
- ค่าศูนย์ในผลลัพธ์หมายความว่าวันในสัปดาห์นั้นทับซ้อนกันping เดือน ซึ่งหมายความว่ามันไม่เกี่ยวข้องกับเดือนนั้น
- ตัวเลขศูนย์เหล่านี้ปรากฏในผลลัพธ์เนื่องจากในโค้ดของคุณ คุณได้ระบุวัน (วันพฤหัสบดี) ไว้ ดังนั้นเมื่อคุณเรียกใช้ฟังก์ชัน “c.itermonthdays” มันจะเริ่มนับวันจากวันพฤหัสบดี และวันพฤหัสบดีของคุณอาจไม่ได้เริ่มต้นในวันที่ 1 เมษายน อาจเป็นวันที่ 28 หรือ 29 มีนาคม ดังนั้นโค้ดจะเริ่มนับวันจากวันที่ 28 มีนาคมและวันต่อๆ มาจนถึงวันที่ 1 เมษายน วันเหล่านี้จะถูกนับเป็นศูนย์ และในผลลัพธ์คุณจะเห็นตัวเลขศูนย์เหล่านี้ หลักการเดียวกันนี้ใช้กับวันสิ้นเดือนด้วย
- ดังนั้น ยกเว้นวันที่ 1-30 วันที่ทั้งหมดจากเดือนก่อนหน้าและเดือนถัดไปจะปรากฏเป็นศูนย์ในผลลัพธ์
วิธีการดึงชื่อเดือนและวันในสัปดาห์จากระบบคอมพิวเตอร์ท้องถิ่น
ขั้นตอน 4) คุณสามารถดึงข้อมูลจากระบบภายในเครื่องได้ เช่น เดือนหรือวันในสัปดาห์
- ผลลัพธ์ที่แสดงอยู่นี้บ่งชี้ว่าเราได้พิมพ์ชื่อเดือนจากระบบท้องถิ่นแล้ว ในทำนองเดียวกัน คุณสามารถดึงชื่อวันในสัปดาห์ได้เช่นกัน ดังที่แสดงด้านล่าง
- ผลลัพธ์ที่ได้ขึ้นอยู่กับการตั้งค่าระบบในพื้นที่ของคุณ หากระบบในพื้นที่ของคุณตั้งค่าไว้เป็นประเทศอื่น ผลลัพธ์ก็จะแสดงผลตามการตั้งค่าของประเทศนั้น ในกรณีนี้คือเดือน ดังนั้นจึงไม่มีความแตกต่างกัน แต่ถ้าเป็นสัปดาห์หรือวัน ผลลัพธ์ก็จะแตกต่างกันอย่างแน่นอน
วิธีการค้นหาวันใดวันหนึ่งโดยเฉพาะตลอดทั้งปี
ขั้นตอน 5) คุณสามารถดึงรายการของวันใดวันหนึ่งในรอบปีได้ ตัวอย่างเช่น จะมีการตรวจสอบบัญชีทุกวันที่ 1 ของทุกปี Monday ของสัปดาห์ สมมติว่าคุณต้องการทราบวันที่ของวันแรก Monday สำหรับแต่ละเดือน คุณสามารถใช้รหัสนี้ได้
- mycal = calendar.monthcalendar(2025, month) สร้างปฏิทินสำหรับเดือนนั้น
- กำหนดค่าตัวแปร week1 และ week2 ให้เป็นสัปดาห์ที่หนึ่งและสัปดาห์ที่สองของปฏิทิน
- ตรวจสอบว่าสัปดาห์ที่ 1 มีอะไรบ้าง Monday และกำหนดวันตรวจสอบบัญชี
- มิเช่นนั้น ให้กำหนดวันตรวจสอบเป็นวันแรก Monday ในสัปดาห์ที่ 2
- ผลลัพธ์จะแสดงวันที่เป็นวันแรก Monday ซึ่งตรงกับเดือนนั้น
- ความยาวของออบเจ็กต์ Cal นี้ขึ้นอยู่กับจำนวนสัปดาห์ในเดือนนั้น ในกรณีของเราคือหนึ่งหรือสองสัปดาห์ เนื่องจากสัปดาห์แรก Monday โดยส่วนใหญ่แล้ว สัปดาห์นั้นจะอยู่ในสัปดาห์แรก แต่ถ้าไม่ ก็จะพิจารณาสัปดาห์ที่สอง มาดูกันว่าทำไมเราจึงพิจารณาสัปดาห์ที่สองด้วย
- ในที่นี้เราใช้ค่าคงที่ปฏิทิน Mondayอ็อบเจ็กต์ปฏิทินจะให้ค่าคงที่ที่แสดงถึงวันอาทิตย์ Mondayวันอังคาร และอื่นๆ ต่อไปเรื่อยๆ ถ้าหากในสัปดาห์แรก วันที่แทนด้วย Monday ค่าคงที่ไม่เท่ากับ 0 – โปรดจำไว้ว่า เลขศูนย์หมายถึงวันที่อยู่ในเดือนอื่น – ดังนั้น Monday เป็นของเดือนนี้และวันตรวจสอบบัญชีอยู่ในสัปดาห์แรก ถ้าเป็น 0 แสดงว่าวันแรก Monday ไม่ได้อยู่ในสัปดาห์แรกของเดือน ดังนั้นจึงต้องอยู่ในสัปดาห์ที่สอง
- ในกรณีนั้น เราจะตั้งค่าตัวแปรวันตรวจสอบเป็น Monday แสดงโดยสัปดาห์ที่สอง วันตรวจสอบบัญชีจะระบุวันที่ของสัปดาห์แรกหรือสัปดาห์ที่สอง
สมบูรณ์ Python ปฏิทิน Code ตัวอย่าง
นี่คือโค้ดฉบับสมบูรณ์
Python 2 ตัวอย่าง
import calendar # Create a plain text calendar c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print str # Create an HTML formatted calendar hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print str # loop over the days of a month # zeroes indicate that the day of the week is in a next month or overlapping month for i in c.itermonthdays(2025, 4): print i # The calendar can give info based on local such a names of days and months (full and abbreviated forms) for name in calendar.month_name: print name for day in calendar.day_name: print day # calculate days based on a rule: For instance an audit day on the second Monday of every month # Figure out what days that would be for each month, we can use the script as shown here for month in range(1, 13): # It retrieves a list of weeks that represent the month mycal = calendar.monthcalendar(2025, month) # The first MONDAY has to be within the first two weeks week1 = mycal[0] week2 = mycal[1] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # if the first MONDAY isn't in the first week, it must be in the second week auditday = week2[calendar.MONDAY] print "%10s %2d" % (calendar.month_name[month], auditday)
Python 3 ตัวอย่าง
import calendar # Create a plain text calendar c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print(str) # Create an HTML formatted calendar hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print(str) # loop over the days of a month # zeroes indicate that the day of the week is in a next month or overlapping month for i in c.itermonthdays(2025, 4): print(i) # The calendar can give info based on local such a names of days and months (full and abbreviated forms) for name in calendar.month_name: print(name) for day in calendar.day_name: print(day) # calculate days based on a rule: For instance an audit day on the second Monday of every month # Figure out what days that would be for each month, we can use the script as shown here for month in range(1, 13): # It retrieves a list of weeks that represent the month mycal = calendar.monthcalendar(2025, month) # The first MONDAY has to be within the first two weeks week1 = mycal[0] week2 = mycal[1] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # if the first MONDAY isn't in the first week, it must be in the second week auditday = week2[calendar.MONDAY] print("%10s %2d" % (calendar.month_name[month], auditday))
ฟังก์ชันที่มีประโยชน์ใน Python โมดูลปฏิทิน
นอกเหนือจากคำแนะนำข้างต้นแล้ว โมดูลปฏิทินยังมาพร้อมกับฟังก์ชันที่มีประโยชน์หลายอย่างซึ่งทำงานได้โดยไม่ต้องสร้างอินสแตนซ์ของคลาส:
- ปฏิทิน.ปฏิทิน(ปี) ส่งคืนปฏิทินทั้งปีในรูปแบบสตริงหลายบรรทัด ในขณะที่ ปฏิทิน.prcal(ปี) พิมพ์ออกมาโดยตรง
- ปฏิทินเดือน(ปี, เดือน) ส่งคืนข้อความของเดือนเดียว และ calendar.prmonth(ปี, เดือน) พิมพ์มัน
- ปฏิทินเดือน (ปี, เดือน) ฟังก์ชันนี้จะส่งคืนค่าของเดือนในรูปแบบลิสต์ของแถวสัปดาห์ โดยแต่ละวันจะเป็นจำนวนเต็ม และวันที่อยู่นอกเดือนจะเป็น 0
ฟังก์ชันเหล่านี้ช่วยให้สามารถสร้างปฏิทินแบบบรรทัดเดียวได้อย่างรวดเร็ว ซึ่งสะดวกในการใช้งานในสคริปต์และเซสชันแบบโต้ตอบที่ไม่ต้องการการควบคุมเพิ่มเติมจากคลาส TextCalendar หรือ HTMLCalendar
วิธีตรวจสอบว่าปีนั้นเป็นปีอธิกสุรทินหรือไม่ Python
โมดูลปฏิทินยังสามารถบอกคุณได้ว่าปีนั้นเป็นปีอธิกสุรทินหรือไม่ ซึ่งมีความสำคัญเพราะเดือนกุมภาพันธ์จะมี 29 วันแทนที่จะเป็น 28 วันในปีอธิกสุรทิน โดยมีสองฟังก์ชันที่จัดการเรื่องนี้:
- ปฏิทิน.วันเว้นวัน(ปี) ฟังก์ชันนี้จะคืนค่า True เมื่อเป็นปีอธิกสุรทิน และคืนค่า False ในกรณีอื่นๆ
- calendar.leapdays(y1, y2) ส่งคืนจำนวนปีอธิกสุรทินในช่วงตั้งแต่ y1 จนถึง y2 (ไม่รวม y2)
ตัวอย่างเช่น calendar.isleap(2024) จะคืนค่า True ในขณะที่ calendar.isleap(2025) จะคืนค่า False การตรวจสอบปีอธิกสุรทินมีประโยชน์เมื่อใดก็ตามที่คุณตรวจสอบความถูกต้องของวันที่ กำหนดตารางกิจกรรมที่เกิดขึ้นซ้ำ หรือนับจำนวนวันที่แน่นอนระหว่างสองปี







