Memperkenalkan Pola Pengulangan
Anda dapat menganggap pola pengulangan sebagai cara untuk mendeskripsikan jadwal tertentu. Ia berisi cukup informasi untuk membuat daftar kejadian (tanggal dan waktu) sesuai jadwal yang diberikan. Pola pengulangan dapat berisi aturan pengulangan yang menggambarkan siklus yang digabungkan menjadi pola keseluruhan. Secara umum, semakin kompleks pola pengulangan, semakin banyak aturan pengulangan yang akan dimilikinya. Pola pengulangan dapat menyertakan pengecualian (bukan pengecualian yang mewakili kesalahan yang terjadi selama eksekusi aplikasi). Pengecualian menambah atau menghapus tanggal kejadian dari pola asli. Pengecualian dapat ditentukan sebagai kejadian eksplisit atau sebagai pola itu sendiri. Contoh pola pengulangan dengan pengecualian:
- Setiap Jumat kedua, kecuali dari Juni hingga Agustus.
- Hari pertama setiap bulan, kecuali Januari, yang harus pada hari ke‑2.
Polanya pengulangan biasanya periodik, tetapi tidak harus demikian. Pola pengulangan dapat dijelaskan sepenuhnya hanya sebagai sekumpulan tanggal dan waktu kejadian yang telah ditentukan. RFC iCalendar mendefinisikan komponen, seperti VEVENT atau VTODO yang mewakili acara atau tugas. Komponen dapat memiliki properti seperti tanggal dan waktu mulai, deskripsi, lokasi, peserta, dan pengulangan. Oleh karenanya, pola pengulangan biasanya ada sebagai properti dari tugas berulang atau acara. Properti pola pengulangan yang didefinisikan oleh iCalendar adalah:
- DTSTART - tanggal dan waktu mulai pola (juga mewakili kejadian pertama jika tidak dikecualikan secara eksplisit).
- RRULE - menentukan aturan pengulangan untuk sekumpulan pengulangan.
- RDATE - mendefinisikan daftar tanggal dan waktu yang akan dimasukkan ke dalam sekumpulan pengulangan.
- EXRULE - menentukan aturan pengulangan untuk pengecualian dari sekumpulan pengulangan.
- EXDATE - mendefinisikan daftar tanggal dan waktu pengecualian dari sekumpulan pengulangan.
Hanya DTSTART yang diperlukan dan harus ada satu DTSTART saja. Semua properti lain bersifat opsional dan dapat ditentukan lebih dari satu kali. Aspose.iCalendar mengambil string dalam format iCalendar dan membaca pola pengulangan ke dalam sebuah RecurrencePattern objek. String dapat berupa deskripsi lengkap komponen iCalendar (misalnya, VEVENT lengkap) atau hanya fragmen yang berisi pola pengulangan. Setelah pola pengulangan dimuat ke dalam objek RecurrencePattern, Anda dapat:
- Periksa dan modifikasi pola secara programatis melalui metode dan properti yang disediakan oleh Aspose.iCalendar
- Hasilkan tanggal/waktu kejadian dalam rentang tanggal yang ditentukan.
- Simpan pola dalam format iCalendar.
Potongan kode berikut menunjukkan bagian RRULE yang berisi aturan pengulangan.
Lihat contoh pola pengulangan untuk ilustrasi cara membuat pola pengulangan.
Tentang Model Objek Aspose.iCalendar
Namespace Aspose.iCalendar berisi semua kelas yang disediakan oleh komponen Aspose.iCalendar. RecurrencePattern dan RecurrenceRule adalah kelas pusat dari Aspose.iCalendar, dan menyediakan implementasi konkrit dari elemen RFC 2445 yang bersesuaian.
Kelas RecurrencePattern mewakili keseluruhan pola pengulangan. Anda dapat membuat pola pengulangan baru dari awal menggunakan konstruktor default atau memuat pola yang ada dalam format iCalendar menggunakan metode statis FromiCalendar. Kelas RecurrenceRule mewakili bagian RRULE atau EXRULE dari sebuah pola pengulangan. RecurrenceRule menyediakan sejumlah properti yang secara langsung memetakan ke padanan mereka dalam standar iCalendar. Misalnya, ByMonth memetakan ke BYMONTH dalam iCalendar dan seterusnya. Dengan memeriksa atau mengatur nilai properti RecurrenceRule, Anda dapat menganalisis atau memodifikasi sebuah aturan pengulangan. Untuk informasi lebih lanjut dan contoh kode, lihat RecurrencePattern dan RecurrenceRule di Referensi API.
Pola Contoh
Bagian ini mencakup topik-topik berikut:
- Hari Terakhir Bulan.
- Hari Kerja Terakhir Setiap Bulan.
- Senin Terakhir Tahun.
- Jumat Minggu ISO 8601 Pertama Tahun.
- Jumat Pertama Tahun.
Hari Terakhir Bulan
Contoh-contoh ini pola pengulangan menentukan hari terakhir bulan, setiap bulan.
RRULE:FREQ=MONTHLY;BYMONTHDAY=-1
Demikian pula, jika Anda menginginkan kejadian pada hari sebelum hari terakhir bulan, gunakan BYMONTHDAY=-2. Jika Anda menentukan BYMONTHDAY=31 maka menurut standar iCalendar, tidak akan ada kejadian yang dihasilkan pada bulan yang memiliki kurang dari 31 hari.
Hari Kerja Terakhir Setiap Bulan
Contoh-contoh ini pola pengulangan menentukan hari kerja terakhir dalam bulan, setiap bulan. Hari kerja didefinisikan sebagai hari di mana Anda bekerja. Di Eropa, misalnya, hari kerja biasanya Senin hingga Jumat.
RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
Aturan di atas menentukan semua hari kerja dalam sebulan dan memilih yang terakhir. Hasil akhirnya adalah hari kerja terakhir dalam sebulan.
Senin Terakhir Tahun
Contoh ini pola pengulangan menentukan sebuah acara yang terjadi pada Senin terakhir tahun tersebut.
RRULE:FREQ=YEARLY;BYDAY=-1MO
Jumat Minggu ISO 8601 Pertama Tahun
Contoh ini pola pengulangan menentukan Jumat pada minggu pertama tahun tersebut. Dalam spesifikasi ISO 8601, minggu pertama tahun adalah minggu yang memiliki setidaknya empat hari. Misalnya, ketika tahun dimulai pada hari Sabtu, minggu 1 adalah minggu yang segera setelahnya, dimulai pada Senin, 3 Januari.
FREQ=YEARLY;BYWEEKNO=1;BYDAY=FR
Jumat Pertama Tahun
Contoh ini pola pengulangan menentukan sebuah acara yang terjadi pada Jumat pertama tahun tersebut.
FREQ=YEARLY;BYDAY=1FR
Pada tahun 1999, misalnya, Jumat pertama tahun itu adalah 1999/01/01, sedangkan Jumat minggu ISO 8601 pertama adalah 1999/01/08.