Bekerja dengan Pengulangan

Bekerja dengan Pengulangan Harian

Aspose.Email mendukung pembuatan pengulangan harian menggunakan MapiCalendarDailyRecurrencePattern. Tiga tipe akhir pengulangan kalender Mapi yang berbeda dapat digunakan termasuk EndAfterNOccurrences, EndAfterDate, dan NeverEnd. Bagian ini menunjukkan pembuatan pola pengulangan harian yang berbeda.

Pengulangan Harian: Tipe EndAfterNOccurrence

Dalam tipe pengulangan ini, jumlah pengulangan harus diatur bersama informasi lain sebagai berikut:

  1. Atur tanggal mulai, selesai, dan jatuh tempo.
  2. Buat sebuah MapiTask.
  3. Atur status tugas menjadi NotAssigned.
  4. Buat objek pengulangan harian dengan mengatur properti seperti PatternType, Period, WeekStartDay, EndType, dan OccurenceCount.
  5. Atur properti MapiTask.setRecurrence ke objek pengulangan harian ini.
  6. Simpan pesan ini di disk.

Potongan kode berikut menunjukkan cara membuat tugas dengan tipe akhir pengulangan sebagai EndAfterNOccurrence.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();

Date startDate = getDate(2015, 7, 16);
Date dueDate = getDate(2015, 7, 16);
Date endByDate = getDate(2015, 8, 1);
 
MapiTask task = new MapiTask("This is test task", "Sample Body", startDate, dueDate);
task.setState(MapiTaskState.NotAssigned);

// Set the Daily recurrence
MapiCalendarDailyRecurrencePattern rec = new MapiCalendarDailyRecurrencePattern();
rec.setPatternType(MapiCalendarRecurrencePatternType.Day);
rec.setPeriod(1);
rec.setWeekStartDay(DayOfWeek.Sunday);
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=DAILY"));

if (rec.getOccurrenceCount() == 0)
{
    rec.setOccurrenceCount(1);
}

task.setRecurrence(rec);
task.save(dataDir + "Daily_out.msg", TaskSaveFormat.Msg);

Fungsi berikut dapat digunakan untuk menghitung jumlah acara antara dua tanggal:

private static long getOccurrenceCount(Date start, Date endBy, String rrule)
{
    DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
    CalendarRecurrence pattern = new CalendarRecurrence("DTSTART:" + formatter.format(start) + "\r\nRRULE:" + rrule);
    DateCollection dates = pattern.generateOccurrences(start, endBy);
    return dates.size();
}

Mengatur Nilai Jumlah Kejadian

Potongan kode berikut menunjukkan cara mengatur nilai jumlah kejadian.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Daily recurrence
MapiCalendarDailyRecurrencePattern record = new MapiCalendarDailyRecurrencePattern();

record.setPatternType(MapiCalendarRecurrencePatternType.Day);
record.setPeriod(1);
record.setWeekStartDay(DayOfWeek.Sunday);
record.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
record.setOccurrenceCount(5);
task.setRecurrence(record);

Pengulangan Harian: Tipe EndAfterDate

"End By" opsi dalam Mapi Task dicapai dengan mengatur properti OccurrenceCount yang dihitung oleh fungsi getOccurrenceCount(). Fungsi ini menerima tanggal mulai, tanggal akhir, dan string RRULE.

Pengulangan Harian: Mengatur Nilai Every Day

Potongan kode berikut menunjukkan cara mengatur nilai period menjadi 1 dan nilai INTERVAL menjadi 1 dalam string RRULE juga.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Daily recurrence
MapiCalendarDailyRecurrencePattern record = new MapiCalendarDailyRecurrencePattern();

record.setPatternType(MapiCalendarRecurrencePatternType.Day);
record.setPeriod(1);
record.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
record.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=DAILY;INTERVAL=1"));
record.setEndDate(endByDate);

Nilai Every Day dapat diatur ke nilai yang sesuai seperti pada contoh berikut:

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Daily recurrence
MapiCalendarDailyRecurrencePattern record = new MapiCalendarDailyRecurrencePattern();

record.setPatternType(MapiCalendarRecurrencePatternType.Day);
record.setPeriod(2);
record.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
record.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=DAILY;INTERVAL=2"));

Pengulangan Harian: Tipe NeverEnd

Tipe akhir dapat diatur dengan menggunakan MapiCalendarRecurrenceEndType.NeverEnd. Period atau INTERVAL dapat diatur ke nilai yang diperlukan misalnya 1 dalam contoh berikut.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Daily recurrence
MapiCalendarDailyRecurrencePattern record = new MapiCalendarDailyRecurrencePattern();

record.setPatternType(MapiCalendarRecurrencePatternType.Day);
record.setPeriod(1);
record.setEndType(MapiCalendarRecurrenceEndType.NeverEnd);

Bekerja dengan Pengulangan Mingguan

Aspose.Email menyediakan fitur lengkap untuk pembuatan pengulangan mingguan menggunakan MapiCalendarWeeklyRecurrencePattern. Tiga tipe akhir pengulangan kalender Mapi yang berbeda dapat digunakan termasuk EndAfterNOccurrences, EndAfterDate, dan NeverEnd. Bagian ini menunjukkan pembuatan pola pengulangan mingguan yang berbeda.

Pengulangan Mingguan: Tipe EndAfterNOccurrences

Dalam tipe pengulangan ini, jumlah pengulangan harus diatur bersama informasi lain sebagai berikut:

  1. Atur tanggal mulai, selesai, dan jatuh tempo.
  2. Buat sebuah MapiTask.
  3. Atur status tugas menjadi NotAssigned.
  4. Buat objek pengulangan mingguan dengan mengatur properti seperti PatternType, Period, WeekStartDay, EndType, dan OccurenceCount.
  5. Atur properti MapiTask.setRecurrence ke objek pengulangan mingguan ini.
  6. Simpan pesan ini di disk.

Potongan kode berikut menunjukkan cara membuat tugas dengan tipe akhir pengulangan sebagai EndAfterNOccurrence.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();

Date startDate = getDate(2015, 7, 16);
Date dueDate = getDate(2015, 7, 16);
Date endByDate = getDate(2015, 9, 1);

MapiTask task = new MapiTask("This is test task", "Sample Body", startDate, dueDate);
task.setState(MapiTaskState.NotAssigned);

// Set the weekly recurrence
MapiCalendarWeeklyRecurrencePattern rec = new MapiCalendarWeeklyRecurrencePattern();
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
rec.setPatternType(MapiCalendarRecurrencePatternType.Week);
rec.setPeriod(1);
rec.setWeekStartDay(DayOfWeek.Sunday);
rec.setDayOfWeek(MapiCalendarDayOfWeek.Friday);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR"));

if (rec.getOccurrenceCount() == 0)
{
    rec.setOccurrenceCount(1);
}

task.setRecurrence(rec);
task.save(dataDir + "Weekly_out.msg", TaskSaveFormat.Msg);

Fungsi berikut dapat digunakan untuk menghitung jumlah acara antara dua tanggal:

private static long getOccurrenceCount(Date start, Date endBy, String rrule)
{
    DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
    CalendarRecurrence pattern = new CalendarRecurrence("DTSTART:" + formatter.format(start) + "\r\nRRULE:" + rrule);
    DateCollection dates = pattern.generateOccurrences(start, endBy);
    return dates.size();
}

Memilih Beberapa Hari dalam Seminggu

Potongan kode berikut menunjukkan cara memilih beberapa hari dalam seminggu.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the weekly recurrence
MapiCalendarWeeklyRecurrencePattern rec = new MapiCalendarWeeklyRecurrencePattern();

rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
rec.setPatternType(MapiCalendarRecurrencePatternType.Week);
rec.setPeriod(1);
rec.setWeekStartDay(DayOfWeek.Sunday);
rec.setDayOfWeek(MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR,MO"));

Memilih Beberapa Hari dalam Seminggu dan Mengatur Interval

Potongan kode berikut menunjukkan cara memilih beberapa hari dalam seminggu dan mengatur interval.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the weekly recurrence
MapiCalendarWeeklyRecurrencePattern rec = new MapiCalendarWeeklyRecurrencePattern();
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
rec.setPatternType(MapiCalendarRecurrencePatternType.Week);
rec.setPeriod(2);
rec.setWeekStartDay(DayOfWeek.Sunday);
rec.setDayOfWeek(MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR,MO;INTERVAL=2"));

Pengulangan Mingguan: Tipe EndAfterDate

"End By" opsi dalam Mapi Task dicapai dengan mengatur properti OccurrenceCount yang dihitung oleh fungsi getOccurrenceCount(). Fungsi ini menerima tanggal mulai, tanggal akhir, dan string RRULE.

Pengulangan Mingguan: Mengatur Nilai Every Day

Potongan kode berikut menunjukkan cara mengatur nilai period menjadi 1 dan nilai INTERVAL menjadi 1 dalam string RRULE juga.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the weekly recurrence
MapiCalendarWeeklyRecurrencePattern rec = new MapiCalendarWeeklyRecurrencePattern();
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
rec.setPatternType(MapiCalendarRecurrencePatternType.Week);
rec.setPeriod(1);
rec.setWeekStartDay(DayOfWeek.Sunday);
rec.setDayOfWeek(MapiCalendarDayOfWeek.Friday);
rec.setEndDate(endByDate);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR;INTERVAL=1"));

Nilai Every Day dapat diatur ke nilai yang sesuai dan beberapa hari dapat dipilih seperti pada contoh berikut:

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiCalendarWeeklyRecurrencePattern record = new MapiCalendarWeeklyRecurrencePattern();
record.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
record.setPatternType(MapiCalendarRecurrencePatternType.Week);
record.setPeriod(2);
record.setWeekStartDay(DayOfWeek.Sunday);
record.setEndDate(endByDate);
record.setDayOfWeek(MapiCalendarDayOfWeek.Friday | MapiCalendarDayOfWeek.Monday);
record.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR,MO;INTERVAL=2"));

Pengulangan Mingguan: Tipe NeverEnd

Tipe akhir dapat diatur dengan menggunakan MapiCalendarRecurrenceEndType.NeverEnd. Period atau INTERVAL dapat diatur ke nilai yang diperlukan misalnya 1 dalam contoh berikut.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the weekly recurrence
MapiCalendarWeeklyRecurrencePattern recurrence = new MapiCalendarWeeklyRecurrencePattern();
recurrence.setEndType(MapiCalendarRecurrenceEndType.NeverEnd);
recurrence.setPatternType(MapiCalendarRecurrencePatternType.Week);
recurrence.setPeriod(1);
recurrence.setWeekStartDay(DayOfWeek.Sunday);
recurrence.setDayOfWeek(MapiCalendarDayOfWeek.Friday);
recurrence.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=WEEKLY;BYDAY=FR"));

Bekerja dengan Pengulangan Bulanan

Aspose.Email mendukung pembuatan pengulangan bulanan menggunakan MapiCalendarMonthlyRecurrencePattern. Tiga tipe akhir pengulangan kalender Mapi yang berbeda dapat digunakan termasuk EndAfterNOccurrences, EndAfterDate, dan NeverEnd. Bagian ini menunjukkan pembuatan pola pengulangan bulanan yang berbeda.

Pengulangan Bulanan: Tipe EndAfterNOccurrences

Dalam tipe pengulangan ini, jumlah pengulangan harus diatur bersama informasi lain sebagai berikut:

  1. Atur tanggal mulai, selesai, dan jatuh tempo.
  2. Buat sebuah MapiTask.
  3. Atur status tugas menjadi NotAssigned.
  4. Buat objek pengulangan bulanan dengan mengatur properti seperti PatternType, Period, WeekStartDay, EndType, dan OccurenceCount.
  5. Atur properti MapiTask.setRecurrence ke objek pengulangan bulanan ini.
  6. Simpan pesan ini di disk.

Potongan kode berikut menunjukkan cara membuat tugas dengan tipe akhir pengulangan sebagai EndAfterNOccurrence.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();

Date startDate = getDate(2015, 7, 16);
Date DueDate = getDate(2015, 7, 16);
Date endByDate = getDate(2015, 12, 31);

MapiTask task = new MapiTask("This is test task", "Sample Body", startDate, dueDate);
task.setState(MapiTaskState.NotAssigned);

// Set the Monthly recurrence
MapiCalendarMonthlyRecurrencePattern rec = new MapiCalendarMonthlyRecurrencePattern();
rec.setDay(15);
rec.setPeriod(1);
rec.setPatternType(MapiCalendarRecurrencePatternType.Month);
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=MONTHLY;BYMONTHDAY=15;INTERVAL=1"));
rec.setWeekStartDay(DayOfWeek.Monday);

if (rec.getOccurrenceCount() == 0)
{
    rec.setOccurrenceCount(1);
}

task.setRecurrence(rec);
task.save(dataDir + "Monthly_out.msg", TaskSaveFormat.Msg);

Fungsi berikut dapat digunakan untuk menghitung jumlah acara antara dua tanggal:

private static long getOccurrenceCount(Date start, Date endBy, String rrule)
{
    DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
    CalendarRecurrence pattern = new CalendarRecurrence("DTSTART:" + formatter.format(start) + "\r\nRRULE:" + rrule);
    DateCollection dates = pattern.generateOccurrences(start, endBy);
    return dates.size();
}

Atur Jumlah Kejadian Tetap

Potongan kode berikut menunjukkan cara mengatur jumlah kejadian tetap.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Monthly recurrence
MapiCalendarMonthlyRecurrencePattern records = new MapiCalendarMonthlyRecurrencePattern();
records.setDay(15);
records.setPeriod(1);
records.setPatternType(MapiCalendarRecurrencePatternType.Month);
records.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
records.setOccurrenceCount(5);
records.setWeekStartDay(DayOfWeek.Monday);

Pengulangan Bulanan: Tipe EndAfterDate

"End By" opsi dalam Mapi Task dicapai dengan mengatur properti OccurrenceCount yang dihitung oleh fungsi getOccurrenceCount(). Fungsi ini menerima tanggal mulai, tanggal akhir, dan string RRULE. Potongan kode berikut menunjukkan cara membuat pengulangan pada tanggal 15 setiap bulan antara mulai dan akhir berdasarkan tanggal.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();

Date startDate = getDate(2015, 7, 1);
Date dueDate = getDate(2015, 7, 1);
Date endByDate = getDate(2015, 12, 31);

MapiTask task = new MapiTask("This is test task", "Sample Body", startDate, dueDate);
task.setState(MapiTaskState.NotAssigned);

// Set the Monthly recurrence
MapiCalendarMonthlyRecurrencePattern recurrence = new MapiCalendarMonthlyRecurrencePattern();
recurrence.setDay(15);
recurrence.setPeriod(1);
recurrence.setPatternType(MapiCalendarRecurrencePatternType.Month);
recurrence.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
recurrence.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=MONTHLY;BYMONTHDAY=15;INTERVAL=1"));
recurrence.setWeekStartDay(DayOfWeek.Monday);
recurrence.setEndDate(endByDate);

task.setRecurrence(recurrence);
task.save(dataDir + "SetMonthlyEndAfterDateRecurrence_out.msg", TaskSaveFormat.Msg);

Pengulangan Bulanan: Tipe NeverEnd

Potongan kode berikut menunjukkan cara jenis akhir dapat diatur dengan menggunakan MapiCalendarRecurrenceEndType.NeverEnd.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiCalendarMonthlyRecurrencePattern recurrence = new MapiCalendarMonthlyRecurrencePattern();
recurrence.setDay(15);
recurrence.setPeriod(1);
recurrence.setPatternType(MapiCalendarRecurrencePatternType.Month);
recurrence.setEndType(MapiCalendarRecurrenceEndType.NeverEnd);
recurrence.setWeekStartDay(DayOfWeek.Monday);

Bekerja dengan Pengulangan Tahunan

Aspose.Email mendukung pembuatan pengulangan tahunan menggunakan MapiCalendarMonthlyRecurrencePattern. Dengan mengatur properti period ke 12, kita dapat mencapai pola pengulangan tahunan. Tiga tipe akhir pengulangan kalender Mapi yang berbeda dapat digunakan termasuk EndAfterNOccurrences, EndAfterDate, dan NeverEnd. Bagian ini menunjukkan pembuatan pola pengulangan tahunan yang berbeda.

Pengulangan Tahunan: Tipe EndAfterNOccurrences

Dalam tipe pengulangan ini, jumlah pengulangan harus diatur bersama informasi lain sebagai berikut:

  1. Atur tanggal mulai, selesai, dan jatuh tempo.
  2. Buat sebuah MapiTask.
  3. Atur status tugas menjadi NotAssigned.
  4. Buat objek pengulangan bulanan dengan mengatur properti seperti PatternType, Period, WeekStartDay, EndType, dan OccurenceCount.
  5. Atur properti MapiTask.setRecurrence ke objek pengulangan bulanan ini untuk mencapai pengulangan tahunan.
  6. Simpan pesan ini di disk.

Potongan kode berikut menunjukkan cara membuat tugas dengan tipe akhir pengulangan sebagai EndAfterNOccurrence.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
Date startDate = getDate(2015, 7, 1);
Date dueDate = getDate(2015, 7, 1);

MapiTask task = new MapiTask("This is test task", "Sample Body", startDate, dueDate);
task.setState(MapiTaskState.NotAssigned);

// Set the Yearly recurrence
MapiCalendarMonthlyRecurrencePattern recurrence = new MapiCalendarMonthlyRecurrencePattern();
recurrence.setDay(15);
recurrence.setPeriod(12);
recurrence.setPatternType(MapiCalendarRecurrencePatternType.Month);
recurrence.setEndType(MapiCalendarRecurrenceEndType.EndAfterNOccurrences);
recurrence.setOccurrenceCount(3);

task.setRecurrence(recurrence);
task.save("Yearly.msg", TaskSaveFormat.Msg);

Pengulangan Tahunan: Tipe EndAfterDate

"End By" opsi dalam Mapi Task dicapai dengan mengatur properti OccurrenceCount yang dihitung oleh fungsi getOccurrenceCount(). Fungsi ini menerima tanggal mulai, tanggal akhir, dan string RRULE. Potongan kode berikut menunjukkan cara membuat pengulangan pada tanggal 15 setiap bulan ke-7 antara mulai dan akhir berdasarkan tanggal.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Yearly recurrence
MapiCalendarMonthlyRecurrencePattern rec = new MapiCalendarMonthlyRecurrencePattern();
rec.setDay(15);
rec.setPeriod(12);
rec.setPatternType(MapiCalendarRecurrencePatternType.Month);
rec.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
rec.setEndDate(endByDate);
rec.setOccurrenceCount(getOccurrenceCount(startDate, endByDate, "FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=7;INTERVAL=1"));

Pengulangan Tahunan: Tipe NeverEnd

Potongan kode berikut menunjukkan cara jenis akhir dapat diatur dengan menggunakan MapiCalendarRecurrenceEndType.NeverEnd.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Set the Yearly recurrence
MapiCalendarMonthlyRecurrencePattern recurrence = new MapiCalendarMonthlyRecurrencePattern();
recurrence.setDay(15);
recurrence.setPeriod(12);
recurrence.setPatternType(MapiCalendarRecurrencePatternType.Month);
recurrence.setEndType(MapiCalendarRecurrenceEndType.NeverEnd);

Hasilkan Pengulangan dari Aturan Pengulangan

API Aspose.Email menyediakan kemampuan untuk menghasilkan Pola Pengulangan dari Aturan Pengulangan (RRULE). Ia mengurai informasi dari RRULE sesuai spesifikasi iCal RFC 5545 dan menghasilkan pola pengulangan menggunakan metode MapiCalendarRecurrencePatternFactory.fromString. Potongan kode berikut menunjukkan cara menghasilkan pola pengulangan dari aturan pengulangan.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();

Date startDate = getDate(2015, 7, 16);
Date endDate = getDate(2015, 8, 1);
MapiCalendar app1 = new MapiCalendar("test location", "test summary", "test description", startDate, endDate);

app1.setStartDate(startDate);
app1.setEndDate(endDate);

String pattern = "DTSTART;TZID=Europe/London:20150831T080000\r\nDTEND;TZID=Europe/London:20150831T083000\r\nRRULE:FREQ=DAILY;INTERVAL=1;COUNT=7\r\nEXDATE:20150831T070000Z,20150904T070000Z";
app1.getRecurrence().setRecurrencePattern(MapiCalendarRecurrencePatternFactory.fromString(pattern));

Tambahkan Lampiran ke Acara Kalender Berulang

API Aspose.Email menyediakan kemampuan untuk menambahkan lampiran ke acara kalender berulang.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String dataDir = RunExamples.getDataDir_Outlook();

Date startDate = addHours(getDate(2018, 7, 19), 12);
MapiCalendar calendar = new MapiCalendar("location1", "summary1", "description1", startDate, addHours(startDate, 1));

MapiCalendarEventRecurrence recurrence = new MapiCalendarEventRecurrence();
MapiCalendarRecurrencePattern pattern = new MapiCalendarDailyRecurrencePattern();
recurrence.setRecurrencePattern(pattern);
pattern.setPatternType(MapiCalendarRecurrencePatternType.Day);
pattern.setPeriod(1);
pattern.setEndType(MapiCalendarRecurrenceEndType.NeverEnd);

Date exceptionDate = addDays(startDate, 3);
MapiCalendarExceptionInfo exception = new MapiCalendarExceptionInfo();
exception.setLocation("exceptionLoc");
exception.setSubject("exceptionSubj");
exception.setBody("exceptionBody");
exception.setOriginalStartDate(exceptionDate);
exception.setStartDateTime(exceptionDate);
exception.setEndDateTime(addHours(exceptionDate, 5));
exception.setAttachments(new MapiAttachmentCollection(calendar));
exception.getAttachments().add("file.txt", "hello, world!".getBytes());

pattern.getExceptions().addItem(exception);
pattern.getModifiedInstanceDates().addItem(exceptionDate);
pattern.getDeletedInstanceDates().addItem(exceptionDate);
calendar.setRecurrence(recurrence);

try (PersonalStorage newPst = PersonalStorage.create(dataDir + "AddAttachmentToMapiExceptionInfo.pst", FileFormatVersion.Unicode))
{
    FolderInfo newFolder = newPst.createPredefinedFolder("Calendar", StandardIpmFolder.Appointments);
    newFolder.addMapiMessageItem(calendar);
}

Atur Zona Waktu Acara Kalender

API Aspose.Email menyediakan kemampuan untuk mengatur zona waktu kalender:

  • informasi zona waktu untuk tanggal mulai/selesai
  • informasi zona waktu untuk pertemuan berulang
  • informasi zona waktu yang menjelaskan cara mengonversi tanggal dan waktu pertemuan pada serangkaian pengulangan ke dan dari UTC

Potongan kode berikut menunjukkan cara mengatur informasi zona waktu kalender:

MapiCalendar event = new MapiCalendar("location", "summary", "description", startDate, endDate);
// UTC time zone
MapiCalendarTimeZone utcTimeZone = new MapiCalendarTimeZone("UTC");
event.setStartDateTimeZone(utcTimeZone);
event.setEndDateTimeZone(utcTimeZone);

MapiCalendarDailyRecurrencePattern pattern = new MapiCalendarDailyRecurrencePattern();
pattern.setPeriod(1);
pattern.setStartDate(startDate);
pattern.setEndDate(untilDate);
pattern.setEndType(MapiCalendarRecurrenceEndType.EndAfterDate);
pattern.setPatternType(MapiCalendarRecurrencePatternType.Day);
pattern.setDayOfWeek(DayOfWeek.Monday);

MapiCalendarEventRecurrence r = new MapiCalendarEventRecurrence();
r.setRecurrencePattern(pattern);
r.setClipStart(startDate);
r.setClipEnd(pattern.getEndDate());
//https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/pidlidappointmenttimezonedefinitionrecur-canonical-property
r.setAppointmentTimeZoneDefinitionRecur(utcTimeZone); // <---
r.setTimeZoneStruct(utcTimeZone); // <---
event.setRecurrence(r);