Giới thiệu các mẫu lặp lại

Bạn có thể xem một recurrence pattern như là một cách để mô tả một lịch trình cụ thể. Nó chứa đủ thông tin để xây dựng danh sách các lần xuất hiện (ngày và thời gian) theo lịch đã cho. Một mẫu lặp có thể chứa các quy tắc lặp mô tả các chu kỳ kết hợp để tạo thành mẫu tổng thể. Nói chung, mẫu lặp càng phức tạp, nó sẽ chứa càng nhiều quy tắc lặp. Mẫu lặp có thể bao gồm exceptions (không nên nhầm lẫn với các ngoại lệ đại diện cho lỗi xảy ra trong quá trình thực thi ứng dụng). Các ngoại lệ thêm vào hoặc loại bỏ các ngày xuất hiện so với mẫu gốc. Các ngoại lệ có thể được chỉ định dưới dạng các lần xuất hiện cụ thể hoặc tự chúng là một mẫu. Các ví dụ về mẫu lặp có ngoại lệ:

  • Mỗi thứ Sáu thứ hai, ngoại trừ từ tháng 6 đến tháng 8.
  • Ngày 1 của mỗi tháng, ngoại trừ tháng Giêng, khi nó sẽ rơi vào ngày 2.

Mẫu lặp thường là định kỳ, nhưng chúng không nhất thiết phải như vậy. Một mẫu lặp có thể được mô tả hoàn toàn chỉ như một tập hợp các ngày và thời gian xuất hiện được định sẵn. RFC iCalendar định nghĩa components, chẳng hạn như VEVENT hoặc VTODO, đại diện cho sự kiện hoặc nhiệm vụ. Các thành phần có thể có các thuộc tính như thời gian bắt đầu, mô tả, địa điểm, người tham dự và chu kỳ lặp lại. Do đó, một mẫu lặp thường tồn tại như một thuộc tính của một nhiệm vụ lặp lại hoặc một sự kiện. Các thuộc tính mẫu lặp được định nghĩa bởi iCalendar là:

  • DTSTART - ngày và thời gian bắt đầu của mẫu (cũng đại diện cho lần xuất hiện đầu tiên nếu không bị loại trừ một cách rõ ràng).
  • RRULE - chỉ định một quy tắc lặp lại cho một tập lặp lại.
  • RDATE - định nghĩa danh sách các ngày và thời gian để bao gồm trong tập lặp lại.
  • EXRULE - chỉ định một quy tắc lặp lại cho các ngoại lệ khỏi tập lặp lại.
  • EXDATE - định nghĩa danh sách các ngày và thời gian ngoại lệ khỏi tập lặp lại.

Chỉ cần DTSTART và phải có duy nhất một DTSTART. Tất cả các thuộc tính khác là tùy chọn và có thể được chỉ định nhiều lần. Aspose.iCalendar nhận một chuỗi ở định dạng iCalendar và đọc mẫu lặp vào một RecurrencePattern đối tượng. Chuỗi có thể là mô tả đầy đủ của một thành phần iCalendar (ví dụ, một VEVENT hoàn chỉnh) hoặc chỉ là một đoạn chứa mẫu lặp lại. Khi mẫu lặp đã được tải vào đối tượng RecurrencePattern, bạn có thể:

  • Xem xét và sửa đổi mẫu bằng chương trình thông qua các phương thức và thuộc tính do Aspose.iCalendar cung cấp
  • Tạo ngày/giờ xuất hiện trong phạm vi ngày xác định.
  • Lưu mẫu ở định dạng iCalendar.

Đoạn mã sau cho bạn thấy phần RRULE chứa quy tắc lặp lại.

Xem phần các mẫu lặp cho các minh họa về cách tạo mẫu lặp.

Về Mô Hình Đối Tượng Aspose.iCalendar

Không gian tên Aspose.iCalendar chứa tất cả các lớp được cung cấp bởi thành phần Aspose.iCalendar. RecurrencePattern và RecurrenceRule là các lớp trung tâm của Aspose.iCalendar, và cung cấp các triển khai cụ thể cho các phần tử RFC 2445 tương ứng.

Lớp RecurrencePattern đại diện cho toàn bộ mẫu lặp. Bạn có thể tạo một mẫu lặp mới từ đầu bằng cách sử dụng hàm tạo mặc định hoặc tải một mẫu hiện có ở định dạng iCalendar bằng phương thức tĩnh FromiCalendar. Lớp RecurrenceRule đại diện cho phần RRULE hoặc EXRULE của một mẫu lặp. RecurrenceRule cung cấp một số thuộc tính ánh xạ trực tiếp tới các đối tương trong tiêu chuẩn iCalendar. Ví dụ, ByMonth ánh xạ tới BYMONTH trong iCalendar và tương tự. Bằng cách kiểm tra hoặc đặt giá trị của các thuộc tính RecurrenceRule, bạn có thể phân tích hoặc sửa đổi một quy tắc lặp. Để biết thêm thông tin và mẫu mã, xem RecurrencePattern và RecurrenceRule trong Tài liệu API.

Mẫu Ví Dụ

Phần này bao gồm các chủ đề sau:

  • Ngày Cuối Cùng Của Tháng.
  • Ngày Làm Việc Cuối Cùng Mỗi Tháng.
  • Thứ Hai Cuối Cùng Của Năm.
  • Thứ Sáu của Tuần ISO 8601 Đầu Tiên trong Năm.
  • Thứ Sáu Đầu Năm.

Ngày Cuối Cùng Của Tháng

Các mẫu này mẫu lặp chỉ định ngày cuối cùng của tháng, mỗi tháng.

RRULE:FREQ=MONTHLY;BYMONTHDAY=-1

Tương tự, nếu bạn muốn một lần xuất hiện vào một ngày trước ngày cuối cùng của tháng, hãy sử dụng BYMONTHDAY=-2. Nếu bạn chỉ định BYMONTHDAY=31 thì theo tiêu chuẩn iCalendar, sẽ không có lần xuất hiện nào được tạo ra trong các tháng có ít hơn 31 ngày.

Ngày Làm Việc Cuối Cùng Mỗi Tháng

Các mẫu này mẫu lặp chỉ định ngày làm việc cuối cùng của tháng, mỗi tháng. Ngày làm việc được định nghĩa là những ngày bạn làm việc. Ở châu Âu, ví dụ, ngày làm việc thường là từ thứ Hai đến thứ Sáu.

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

Quy tắc trên chỉ định tất cả các ngày làm việc của một tháng và chọn ngày cuối cùng trong số chúng. Kết quả là ngày làm việc cuối cùng trong tháng.

Thứ Hai Cuối Cùng Của Năm

Mẫu này mẫu lặp chỉ định một sự kiện xảy ra vào thứ Hai cuối cùng của năm.

RRULE:FREQ=YEARLY;BYDAY=-1MO

Thứ Sáu của Tuần ISO 8601 Đầu Tiên trong Năm

Mẫu này mẫu lặp chỉ định thứ Sáu của tuần đầu tiên trong năm. Theo đặc tả ISO 8601, tuần đầu tiên của năm là tuần có ít nhất bốn ngày. Khi một năm bắt đầu vào thứ Bảy, ví dụ, tuần 1 là tuần ngay sau đó, bắt đầu vào thứ Hai, ngày 3 tháng 1.

FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR

Thứ Sáu Đầu Năm

Mẫu này mẫu lặp chỉ định một sự kiện xảy ra vào thứ Sáu đầu tiên của năm.

FREQ=YEARLY;BYDAY=1FR

Ví dụ, vào năm 1999, thứ Sáu thứ nhất của năm là 1999/01/01, trong khi thứ Sáu của tuần ISO 8601 thứ nhất là 1999/01/08.