Python บทช่วยสอนปฏิทินพร้อมตัวอย่าง
โมดูลปฏิทินใน Python มีคลาสปฏิทินที่สามารถคำนวณงานต่างๆ ตามวัน เดือน ปีได้ ยิ่งไปกว่านั้น ยังมีคลาส TextCalendar และ HTMLCalendar อีกด้วย Python ช่วยให้คุณสามารถแก้ไขปฏิทินและใช้งานได้ตามความต้องการของคุณ
มาดูกันว่าเราสามารถทำอะไรได้บ้าง Python ปฏิทิน.
ขั้นตอนที่ 1) เรียกใช้รหัส
- รหัสบรรทัด # 1: เราเริ่มต้นด้วย "นำเข้าปฏิทิน" ซึ่งจะนำเข้าคลาสทั้งหมดของโมดูลนี้
- รหัสบรรทัด # 3: c= ปฏิทิน TextCalendar(calendar.SUNDAY) บอกให้ล่ามสร้างปฏิทินข้อความ ต้นเดือนจะเป็นวันอาทิตย์ ใน Pythonคุณสามารถจัดรูปแบบปฏิทินตามที่คุณสามารถเปลี่ยนวันของเดือนที่จะเริ่มต้นได้
- Code Line # 4: str= c.formatmonth(2025,1) เรากำลังสร้างปฏิทินสำหรับปี 2025 เดือนที่ 1 – มกราคม
- รหัสบรรทัด # 5: print str จะพิมพ์ผลลัพธ์
มาเปลี่ยนค่าจากวันอาทิตย์เป็นวันพฤหัสบดีอย่างรวดเร็วแล้วตรวจสอบผลลัพธ์
ขั้นตอน 2) คุณยังสามารถพิมพ์ปฏิทินในรูปแบบ HTML ได้ คุณสมบัตินี้มีประโยชน์สำหรับนักพัฒนาซอฟต์แวร์ หากต้องการเปลี่ยนแปลงรูปลักษณ์ของปฏิทิน
ขั้นตอน 3) ลูป ตลอดวันของเดือนโดยใช้ c.itermonthday (2025,4) มันจะดึงข้อมูลจำนวนวันทั้งหมดสำหรับเดือนนั้น
- เมื่อคุณรันโค้ดเพื่อให้ได้จำนวนวันทั้งหมดในเดือนใดเดือนหนึ่งโดยพูดว่า "เมษายน" คุณจะได้รับผลลัพธ์ 30 วัน แต่คุณจะเห็นเลขศูนย์บางตัวพร้อมกับวันเหล่านี้ที่จุดเริ่มต้นและบางครั้งที่จุดสิ้นสุดของมัน .
- ค่าศูนย์ในเอาต์พุตหมายความว่าวันในสัปดาห์อยู่ในเดือนที่ทับซ้อนกัน ซึ่งหมายความว่าวันดังกล่าวไม่ได้อยู่ในเดือนนั้น
- ศูนย์เหล่านี้ปรากฏในเอาต์พุตเนื่องจากในโค้ดของคุณคุณได้กล่าวถึงวัน (วันพฤหัสบดี) ดังนั้นเมื่อคุณเรียกใช้ฟังก์ชัน "c.itermonthdays" ฟังก์ชันจะเริ่มนับวันตั้งแต่วันพฤหัสบดี และวันพฤหัสบดีของคุณอาจไม่เริ่มต้นด้วยวันที่ 1st ของเดือนเมษายนอาจเป็นวันที่ 28th หรือ 29th ของเดือนมีนาคม ดังนั้นเมื่อคุณรันโค้ด มันจะเริ่มนับวันจาก 28 วันth ของเดือนมีนาคมและวันอื่นๆ ถัดมาจนถึงวันที่ 1st ของเดือนเมษายน วันเหล่านี้จะถูกนับเป็นศูนย์และในผลลัพธ์คุณจะเห็นศูนย์เหล่านี้ และจะมีผลเช่นเดียวกันนี้จนถึงสิ้นเดือน
- ดังนั้นยกเว้นวันที่ 1-30 วันที่ทั้งหมดจากเดือนก่อนหน้าและเดือนที่โพสต์จะปรากฏในเอาต์พุตเป็นศูนย์
ขั้นตอน 4) คุณสามารถดึงข้อมูลจากระบบภายในเครื่องได้ เช่น เดือนหรือวันธรรมดา เป็นต้น
- ผลลัพธ์ที่แสดงที่นี่แสดงให้เห็นว่าเราได้พิมพ์ชื่อเดือนจากระบบภายในเครื่องแล้ว นอกจากนี้ คุณยังสามารถดึงชื่อวันธรรมดาออกมาได้ดังที่แสดงด้านล่าง
-
ผลลัพธ์จะขึ้นอยู่กับระบบท้องถิ่น สมมติว่าระบบท้องถิ่นของคุณคือประเทศอื่น ระบบจะให้เอาต์พุตตามการตั้งค่าท้องถิ่นของประเทศนั้น เรามีเวลาเป็นเดือนๆ จึงไม่ต่างกัน แต่ถ้าเป็นสัปดาห์หรือวัน ก็จะแตกต่างอย่างแน่นอน
ขั้นตอน 5) คุณสามารถดึงรายการวันที่ระบุตลอดทั้งปีได้ ตัวอย่างเช่น มีวันตรวจสอบทุกวันแรก Monday ของสัปดาห์ คุณต้องการทราบวันที่แรก Monday สำหรับแต่ละเดือน คุณสามารถใช้รหัสนี้
- mycal = Calendar.monthcalendar(2025, month) จะสร้างปฏิทินสำหรับเดือนนั้นๆ
- ตั้งค่าตัวแปร week1 และ week2 เป็นสัปดาห์แรกและสัปดาห์ที่สองของปฏิทิน
- ตรวจสอบว่าสัปดาห์ที่ 1 มีหรือไม่ Monday, กำหนดวันตรวจสอบ
- มิฉะนั้นให้กำหนดให้วันตรวจสอบเป็นวันแรก Monday ในสัปดาห์ที่ 2
- ผลลัพธ์จะแสดงวันที่เป็นวันแรก Monday ซึ่งตรงกับเดือนนั้น
- ความยาวของวัตถุ Cal นี้จะมีความยาวตามจำนวนสัปดาห์ในหนึ่งเดือน ในกรณีของเรา มันจะเป็นหนึ่งหรือสองอย่างแรก Monday ของสัปดาห์จะอยู่ในสัปดาห์แรกบ่อยที่สุด แต่ถ้าไม่ก็ให้พิจารณาสัปดาห์ที่สอง ให้ดูรายละเอียดว่าทำไมเราจึงพิจารณาสัปดาห์ที่สองด้วย
- ที่นี่เราใช้ค่าคงที่ของปฏิทิน Mondayวัตถุปฏิทินจะให้ค่าคงที่ที่แสดงถึงวันอาทิตย์ Monday, วันอังคาร เป็นต้น เราเคยเห็นสิ่งเหล่านี้มาก่อน ดังนั้น หากในสัปดาห์ที่หนึ่ง วันที่แสดงด้วย Monday ค่าคงที่ไม่เท่ากับ 0 จำไว้ว่าศูนย์หมายถึงวันที่เป็นของเดือนอื่น ในกรณีนี้ ถ้ามันเป็นศูนย์ มันจะเป็น a Monday ที่เป็นของเดือนที่แล้ว แต่หากเป็นอย่างแรก Monday ไม่เท่ากับ 0 นั่นหมายความว่าวันตรวจสอบของฉันจะอยู่ภายในสัปดาห์ที่หนึ่ง มิฉะนั้น หากเป็น 0 ก็แสดงว่าวันตรวจสอบครั้งแรก Monday ไม่ได้อยู่ในสัปดาห์แรกของเดือน แต่ต้องเป็นสัปดาห์ที่สอง
- ดังนั้น ฉันก็เลยบอกว่า โอเค ตั้งค่าตัวแปรวันตรวจสอบของฉันให้เป็น Monday แสดงโดยสัปดาห์ที่สอง ดังนั้นวันตรวจสอบจะกลับมาโดยจะเป็นวันใดก็ตามสำหรับสัปดาห์แรกหรือสัปดาห์ที่สอง
นี่คือรหัสที่สมบูรณ์
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))
สรุป
- In Pythonคุณสามารถจัดรูปแบบปฏิทินตามที่คุณต้องการ เนื่องจากคุณสามารถเปลี่ยนวันของเดือนที่จะเริ่มต้นได้
- พิมพ์ปฏิทินในรูปแบบ HTML
- ดึงข้อมูลจากระบบภายในเครื่อง เช่น เดือนหรือวันธรรมดา
- ดึงรายการวันที่ระบุตลอดทั้งปี