แนะนำรูปแบบการทำซ้ำ

คุณสามารถพิจารณา รูปแบบการเกิดซ้ำ เป็นวิธีการอธิบายกำหนดการที่เฉพาะเจาะจง. มันมีข้อมูลเพียงพอที่จะสร้างรายการของเหตุการณ์ (วันที่และเวลา) ตามกำหนดการที่ให้. รูปแบบการเกิดซ้ำอาจมีกฎการเกิดซ้ำที่อธิบายวัฏจักรที่รวมกันเป็นรูปแบบโดยรวม. โดยทั่วไป, รูปแบบการเกิดซ้ำที่ซับซ้อนมากเท่าใด จะมีกฎการเกิดซ้ำมากเท่านั้น. รูปแบบการเกิดซ้ำสามารถรวม ข้อยกเว้น (ไม่ใช่ข้อยกเว้นที่แทนความผิดพลาดที่เกิดขึ้นระหว่างการทำงานของแอปพลิเคชัน) ข้อยกเว้นจะเพิ่มหรือเอาวันที่เกิดเหตุออกจากรูปแบบดั้งเดิม. ข้อยกเว้นสามารถระบุเป็นเหตุการณ์ที่ชัดเจนหรือเป็นรูปแบบเองได้. ตัวอย่างของรูปแบบการเกิดซ้ำที่มีข้อยกเว้น:

  • ทุกวันศุกร์ที่ 2, ยกเว้นตั้งแต่เดือนมิถุนายนถึงสิงหาคม.
  • วันแรกของทุกเดือน, ยกเว้นเดือนมกราคม, ซึ่งควรเป็นวันที่ 2.

รูปแบบการเกิดซ้ำมักจะเป็นแบบเป็นช่วงเวลา, แต่ไม่จำเป็นต้องเป็นเช่นนั้น. รูปแบบการเกิดซ้ำสามารถอธิบายได้อย่างสมบูรณ์โดยเป็นชุดของวันที่และเวลาเกิดเหตุที่กำหนดล่วงหน้า. RFC ของ iCalendar กำหนด components เช่น VEVENT หรือ VTODO ที่แสดงถึงเหตุการณ์หรือภารกิจ. ส่วนประกอบเหล่านี้สามารถมีคุณสมบัติเช่น วันที่เริ่มต้น, คำอธิบาย, สถานที่, ผู้เข้าร่วมและการเกิดซ้ำ. ดังนั้นรูปแบบการเกิดซ้ำโดยทั่วไปจะอยู่เป็นคุณสมบัติของงานที่เกิดซ้ำหรือเหตุการณ์. คุณสมบัติของรูปแบบการเกิดซ้ำที่กำหนดโดย iCalendar มีดังนี้:

  • DTSTART - วันที่และเวลาเริ่มต้นของรูปแบบ (ยังเป็นการแทนเหตุการณ์แรกหากไม่ได้ยกเว้นโดยชัดเจน).
  • RRULE - ระบุกฎการทำซ้ำสำหรับชุดการทำซ้ำ.
  • RDATE - กำหนดรายการของวันและเวลาเพื่อรวมในชุดการทำซ้ำ.
  • EXRULE - ระบุกฎการทำซ้ำสำหรับข้อยกเว้นจากชุดการทำซ้ำ.
  • EXDATE - กำหนดรายการของวันและเวลาที่ยกเว้นจากชุดการทำซ้ำ.

ต้องมีเพียง DTSTART เท่านั้นและต้องมีเพียงหนึ่งค่า DTSTART ส่วนคุณสมบัติอื่น ๆ เป็นออปชันและสามารถระบุหลายครั้ง Aspose.iCalendar รับสตริงในรูปแบบ iCalendar และอ่านรูปแบบการทำซ้ำเข้าไปใน RecurrencePattern อ็อบเจ็กต์ สตริงสามารถเป็นคำอธิบายเต็มรูปแบบของคอมโพเนนท์ iCalendar (เช่น VEVENT ที่สมบูรณ์) หรืออาจเป็นเพียงส่วนย่อยที่มีรูปแบบการทำซ้ำเท่านั้น เมื่อรูปแบบการทำซ้ำโหลดเข้าสู่ RecurrencePattern object แล้ว คุณสามารถ:

  • ตรวจสอบและแก้ไขรูปแบบโดยโปรแกรมผ่านเมธอดและคุณสมบัติที่ Aspose.iCalendar ให้มา
  • สร้างวันที่/เวลาเกิดเหตุในช่วงวันที่ที่ระบุ.
  • บันทึกรูปแบบในรูปแบบ iCalendar.

โค้ดสแนปต่อไปนี้แสดงส่วน RRULE ที่มีกฎการทำซ้ำ.

ดูที่ รูปแบบการเกิดซ้ำตัวอย่าง สำหรับภาพอธิบายวิธีสร้างรูปแบบการเกิดซ้ำ.

เกี่ยวกับโมเดลวัตถุ Aspose.iCalendar

เนมสเปซ Aspose.iCalendar มีคลาสทั้งหมดที่จัดหาโดยคอมโพเนนท์ Aspose.iCalendar. RecurrencePattern และ RecurrenceRule เป็นคลาสหลักของ Aspose.iCalendar, และให้การนำไปใช้ที่เป็นรูปธรรมขององค์ประกอบ RFC 2445 ที่สอดคล้อง.

คลาส RecurrencePattern แสดงถึงรูปแบบการเกิดซ้ำทั้งหมด. คุณสามารถสร้างรูปแบบการเกิดซ้ำใหม่จากศูนย์โดยใช้คอนสตรัคเตอร์เริ่มต้นหรือโหลดรูปแบบที่มีอยู่ในรูปแบบ iCalendar ด้วยเมธอดสแตติก FromiCalendar. คลาส RecurrenceRule แสดงส่วน RRULE หรือ EXRULE ของรูปแบบการเกิดซ้ำ. RecurrenceRule เปิดเผยคุณสมบัติจำนวนหลายรายการที่แมพตรงกับมาตรฐาน iCalendar. ตัวอย่างเช่น, ByMonth แมพกับ BYMONTH ใน iCalendar เป็นต้น. โดยการตรวจสอบหรือกำหนดค่าคุณสมบัติของ RecurrenceRule คุณสามารถวิเคราะห์หรือแก้ไขกฎการเกิดซ้ำ. สำหรับข้อมูลเพิ่มเติมและตัวอย่างโค้ด, ดู RecurrencePattern และ RecurrenceRule ใน API Reference.

รูปแบบตัวอย่าง

ส่วนนี้มีหัวข้อต่อไปนี้:

  • วันสุดท้ายของเดือน.
  • วันทำงานสุดท้ายของทุกเดือน.
  • วันจันทร์สุดท้ายของปี.
  • วันศุกร์ของสัปดาห์ ISO 8601 แรกของปี.
  • วันศุกร์แรกของปี.

วันสุดท้ายของเดือน

ตัวอย่างเหล่านี้ รูปแบบการเกิดซ้ำ กำหนดวันสุดท้ายของเดือน, ทุกเดือน.

RRULE:FREQ=MONTHLY;BYMONTHDAY=-1

เช่นเดียวกัน, หากคุณต้องการเหตุการณ์ในวันที่ก่อนวันสุดท้ายของเดือน, ใช้ BYMONTHDAY=-2. หากคุณระบุ BYMONTHDAY=31 ตามมาตรฐาน iCalendar จะไม่มีเหตุการณ์เกิดขึ้นในเดือนที่มีน้อยกว่า 31 วัน.

วันทำงานสุดท้ายของทุกเดือน

ตัวอย่างเหล่านี้ รูปแบบการเกิดซ้ำ กำหนดวันทำงานสุดท้ายของเดือน, ทุกเดือน. วันทำงานถูกกำหนดเป็นวันที่คุณทำงาน. ตัวอย่างเช่นในยุโรป, วันทำงานมักเป็นวันจันทร์ถึงศุกร์.

RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1

กฎด้านบนกำหนดวันทำงานทั้งหมดของเดือนและเลือกวันทำงานสุดท้าย. ผลลัพธ์คือวันทำงานสุดท้ายของเดือน.

วันจันทร์สุดท้ายของปี

ตัวอย่างนี้ รูปแบบการเกิดซ้ำ กำหนดเหตุการณ์ที่เกิดขึ้นในวันจันทร์สุดท้ายของปี.

RRULE:FREQ=YEARLY;BYDAY=-1MO

วันศุกร์ของสัปดาห์ ISO 8601 แรกของปี

ตัวอย่างนี้ รูปแบบการเกิดซ้ำ กำหนดวันศุกร์ของสัปดาห์แรกของปี. ตามสเปค ISO 8601, สัปดาห์แรกของปีคือสัปดาห์ที่มีอย่างน้อยสี่วัน. เมื่อปีเริ่มต้นในวันเสาร์, ตัวอย่างเช่น, สัปดาห์ที่ 1 จะเป็นสัปดาห์ถัดไปทันที, เริ่มต้นจากวันจันทร์ที่ 3 มกราคม.

FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR

วันศุกร์แรกของปี

ตัวอย่างนี้ รูปแบบการเกิดซ้ำ กำหนดเหตุการณ์ที่เกิดขึ้นในวันศุกร์แรกของปี.

FREQ=YEARLY;BYDAY=1FR

ในปี 1999, ตัวอย่างเช่น, วันศุกร์แรกของปีคือ 1999/01/01, ขณะที่วันศุกร์ของสัปดาห์ ISO 8601 แรกคือ 1999/01/08.