Python โมดูลปฏิทินพร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 🔘 ปฏิทินมีสองประเภท: คลาส TextCalendar และ HTMLCalendar สร้างปฏิทินแบบข้อความธรรมดาและแบบพร้อมใช้งานบนเว็บสำหรับเดือนหรือปีที่เลือก
  • ☑️ วันธรรมดาวันแรก: ค่าคงที่ต่างๆ เช่น calendar.SUNDAY และเมธอด setfirstweekday() จะเปลี่ยนวันที่เริ่มต้นของแต่ละสัปดาห์
  • วนซ้ำหลายวัน: เมธอด itermonthdays() จะวนลูปไปตลอดทั้งเดือนและทำเครื่องหมายส่วนที่ทับซ้อนกันping จำนวนวันจากเดือนที่อยู่ติดกันถือเป็นศูนย์
  • 🧪 ฟังก์ชันช่วยเหลือ: ฟังก์ชันต่างๆ เช่น isleap(), weekday() และ monthrange() ช่วยตอบคำถามเกี่ยวกับวันที่ที่พบบ่อยโดยไม่ต้องใช้ไลบรารีเพิ่มเติมใดๆ
  • 🛠️ ห้องสมุดมาตรฐาน: โมดูลปฏิทินจะมาพร้อมกับ Pythonดังนั้นจึงไม่จำเป็นต้องติดตั้งก่อนนำเข้าและใช้งาน
  • 🤖 เวิร์กโฟลว์ AI: กระบวนการเรียนรู้ของเครื่องจะดึงคุณลักษณะของปฏิทิน เช่น วันในสัปดาห์และปีอธิกสุรทิน เพื่อใช้ในการพยากรณ์อนาคตของอนุกรมเวลา

Python โมดูลปฏิทิน

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

โมดูลปฏิทินคืออะไรใน Python?

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

โมดูลนี้ประกอบด้วยคลาสหลักห้าคลาส:

  • ปฏิทิน เป็นคลาสพื้นฐานที่ให้ข้อมูลซึ่งใช้ในการสร้างปฏิทินอื่นๆ
  • ปฏิทินข้อความ สร้างปฏิทินข้อความธรรมดาสำหรับหนึ่งเดือนหรือทั้งปี
  • ปฏิทิน HTML สร้างปฏิทินในรูปแบบตาราง HTML สำหรับหน้าเว็บ
  • ปฏิทินข้อความท้องถิ่น เป็นปฏิทินข้อความที่ใช้ชื่อวันและเดือนของสถานที่ที่เลือกไว้
  • ปฏิทิน HTML ท้องถิ่น คือรูปแบบ HTML ที่เคารพภาษาท้องถิ่นที่เลือกไว้

โดยปกติแล้ว สัปดาห์ตามปฏิทินจะเริ่มต้นในวันที่... Mondayตามธรรมเนียมของยุโรป คุณสามารถเปลี่ยนวันแรกได้โดยใช้ค่าคงที่ เช่น calendar.SUNDAY ดังตัวอย่างด้านล่าง

วิธีการพิมพ์ปฏิทินข้อความในรูปแบบต่างๆ Python

ขั้นตอน 1) เรียกใช้รหัส

พิมพ์ปฏิทินข้อความในรูปแบบ Python

  • 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 จะแสดงผลลัพธ์ออกมา

ลองเปลี่ยนค่าจากวันอาทิตย์เป็นวันพฤหัสบดีอย่างรวดเร็ว แล้วตรวจสอบผลลัพธ์กันดู

เปลี่ยนวันธรรมดาวันแรกของ Python ปฏิทิน

วิธีการพิมพ์ปฏิทิน HTML Python

ขั้นตอน 2) นอกจากนี้ คุณยังสามารถพิมพ์ปฏิทินในรูปแบบ HTML ได้ คุณสมบัตินี้มีประโยชน์สำหรับนักพัฒนาที่ต้องการเปลี่ยนแปลงรูปลักษณ์และรูปแบบของปฏิทิน

พิมพ์ปฏิทิน HTML ใน Python

วิธีวนซ้ำตามวันต่างๆ ในหนึ่งเดือน

ขั้นตอน 3) ลูป ตลอดระยะเวลาของเดือนโดยใช้ c.itermonthdays (2025,4); มันจะดึงจำนวนวันทั้งหมดของเดือนนั้นออกมา

วนซ้ำไปตามวันต่างๆ ในหนึ่งเดือน Python

  • เมื่อคุณรันโค้ดเพื่อหาจำนวนวันทั้งหมดของเดือนใดเดือนหนึ่ง เช่น "เมษายน" คุณจะได้ผลลัพธ์เป็น 30 วัน แต่คุณอาจเห็นเลขศูนย์ปรากฏอยู่ด้วยทั้งในตอนต้นและบางครั้งในตอนท้าย
  • ค่าศูนย์ในผลลัพธ์หมายความว่าวันในสัปดาห์นั้นทับซ้อนกันping เดือน ซึ่งหมายความว่ามันไม่เกี่ยวข้องกับเดือนนั้น
  • ตัวเลขศูนย์เหล่านี้ปรากฏในผลลัพธ์เนื่องจากในโค้ดของคุณ คุณได้ระบุวัน (วันพฤหัสบดี) ไว้ ดังนั้นเมื่อคุณเรียกใช้ฟังก์ชัน “c.itermonthdays” มันจะเริ่มนับวันจากวันพฤหัสบดี และวันพฤหัสบดีของคุณอาจไม่ได้เริ่มต้นในวันที่ 1 เมษายน อาจเป็นวันที่ 28 หรือ 29 มีนาคม ดังนั้นโค้ดจะเริ่มนับวันจากวันที่ 28 มีนาคมและวันต่อๆ มาจนถึงวันที่ 1 เมษายน วันเหล่านี้จะถูกนับเป็นศูนย์ และในผลลัพธ์คุณจะเห็นตัวเลขศูนย์เหล่านี้ หลักการเดียวกันนี้ใช้กับวันสิ้นเดือนด้วย
  • ดังนั้น ยกเว้นวันที่ 1-30 วันที่ทั้งหมดจากเดือนก่อนหน้าและเดือนถัดไปจะปรากฏเป็นศูนย์ในผลลัพธ์

วิธีการดึงชื่อเดือนและวันในสัปดาห์จากระบบคอมพิวเตอร์ท้องถิ่น

ขั้นตอน 4) คุณสามารถดึงข้อมูลจากระบบภายในเครื่องได้ เช่น เดือนหรือวันในสัปดาห์

ดึงชื่อเดือนจากระบบท้องถิ่นใน Python

  • ผลลัพธ์ที่แสดงอยู่นี้บ่งชี้ว่าเราได้พิมพ์ชื่อเดือนจากระบบท้องถิ่นแล้ว ในทำนองเดียวกัน คุณสามารถดึงชื่อวันในสัปดาห์ได้เช่นกัน ดังที่แสดงด้านล่าง
  • ผลลัพธ์ที่ได้ขึ้นอยู่กับการตั้งค่าระบบในพื้นที่ของคุณ หากระบบในพื้นที่ของคุณตั้งค่าไว้เป็นประเทศอื่น ผลลัพธ์ก็จะแสดงผลตามการตั้งค่าของประเทศนั้น ในกรณีนี้คือเดือน ดังนั้นจึงไม่มีความแตกต่างกัน แต่ถ้าเป็นสัปดาห์หรือวัน ผลลัพธ์ก็จะแตกต่างกันอย่างแน่นอน

ดึงชื่อวันในสัปดาห์จากระบบท้องถิ่นใน Python

วิธีการค้นหาวันใดวันหนึ่งโดยเฉพาะตลอดทั้งปี

ขั้นตอน 5) คุณสามารถดึงรายการของวันใดวันหนึ่งในรอบปีได้ ตัวอย่างเช่น จะมีการตรวจสอบบัญชีทุกวันที่ 1 ของทุกปี Monday ของสัปดาห์ สมมติว่าคุณต้องการทราบวันที่ของวันแรก Monday สำหรับแต่ละเดือน คุณสามารถใช้รหัสนี้ได้

ค้นหาวันใดวันหนึ่งในรอบปีได้ที่นี่ Python

  • 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 การตรวจสอบปีอธิกสุรทินมีประโยชน์เมื่อใดก็ตามที่คุณตรวจสอบความถูกต้องของวันที่ กำหนดตารางกิจกรรมที่เกิดขึ้นซ้ำ หรือนับจำนวนวันที่แน่นอนระหว่างสองปี

คำถามที่พบบ่อย

โมดูลปฏิทินมุ่งเน้นไปที่การสร้างและวิเคราะห์ปฏิทิน ไม่ว่าจะเป็นข้อความ HTML ตัวเลขวันในสัปดาห์ และการตรวจสอบปีอธิกสุรทิน ส่วนโมดูลวันที่และเวลาจะจัดการกับเวลา การคำนวณ และการจัดรูปแบบของวันที่และเวลาแต่ละรายการ โปรแกรมหลายโปรแกรมนำเข้าทั้งสองโมดูลและใช้งานร่วมกัน

เรียกใช้ calendar.weekday(year, month, day) ซึ่งจะส่งค่าจำนวนเต็มตั้งแต่ 0 (Monday) ถึง 6 (วันอาทิตย์) จับคู่กับ calendar.day_name เพื่อแปลงตัวเลขนั้นให้เป็นป้ายกำกับที่อ่านง่าย เช่น Monday หรือวันศุกร์

ใช้ calendar.monthrange(year, month) ซึ่งจะส่งคืนทูเปิลที่มีค่าที่สองเป็นจำนวนวัน ดังนั้น calendar.monthrange(2025, 2)[1] จะส่งคืน 28 ค่าแรกคือวันในสัปดาห์ของวันแรกของเดือนนั้น

ใช้ `calendar.LocaleTextCalendar` หรือ `calendar.LocaleHTMLCalendar` แล้วส่งค่า locale เช่น “fr_FR” เข้าไป จากนั้นเดือนที่จัดรูปแบบแล้วจะแสดงชื่อวันในสัปดาห์และชื่อเดือนในภาษานั้น โดยมีเงื่อนไขว่าระบบปฏิบัติการต้องติดตั้ง locale นั้นไว้แล้ว

สร้างมาร์กอัปด้วย HTMLCalendar().formatmonth(2025, 1) จากนั้นเปิดไฟล์ในโหมดเขียนและเรียกใช้ write() ด้วยสตริงนั้น การบันทึกไฟล์ด้วยนามสกุล .html จะทำให้เบราว์เซอร์ใด ๆ ก็ตามแสดงปฏิทินที่จัดรูปแบบแล้วได้

โดยปกติแล้ว สัปดาห์จะเริ่มต้นในวันที่... Mondayตามธรรมเนียมของยุโรป เรียกใช้เมธอด `calendar.setfirstweekday(calendar.SUNDAY)` หรือส่งค่าคงที่ เช่น `calendar.SUNDAY` ไปยัง `TextCalendar` เพื่อให้สัปดาห์เริ่มต้นในวันอื่น

กระบวนการประมวลผลข้อมูลใช้ฟังก์ชันปฏิทินเพื่อดึงคุณลักษณะต่างๆ เช่น วันในสัปดาห์ หมายเลขสัปดาห์ และตัวบ่งชี้ปีอธิกสุรทิน จากข้อมูลวันที่ดิบ คุณลักษณะปฏิทินที่สร้างขึ้นเหล่านี้ช่วยให้แบบจำลองการเรียนรู้ของเครื่องสามารถจับรูปแบบรายสัปดาห์และตามฤดูกาลในการพยากรณ์อนุกรมเวลาได้

ใช่แล้ว GitHub Copilot และผู้ช่วย AI ของ Agentic สามารถเขียนโค้ดโมดูลปฏิทินได้ เช่น การพิมพ์เดือน การตรวจสอบปีอธิกสุรทิน หรือการสร้างปฏิทิน HTML จากข้อความแสดงความคิดเห็นสั้นๆ Revตรวจสอบผลลัพธ์ เนื่องจากดัชนีวันในสัปดาห์และการตั้งค่าวันแรกอาจทำให้สับสนได้ง่าย

สรุปโพสต์นี้ด้วย: