Làm việc với Các Định kỳ

Làm việc với Định kỳ Hàng ngày

Aspose.Email hỗ trợ tạo định kỳ hàng ngày bằng cách sử dụng MapiCalendarDailyRecurrencePattern. Ba loại kết thúc định kỳ lịch Mapi khác nhau có thể được sử dụng bao gồm EndAfterNOccurrences, EndAfterDateNeverEnd. Phần này trình bày cách tạo các mẫu định kỳ hàng ngày khác nhau.

Định kỳ Hàng ngày: Loại EndAfterNOccurrence

Trong loại định kỳ này, số lần lặp lại cần được đặt cùng với các thông tin khác như sau:

  1. Đặt ngày bắt đầu, kết thúc và ngày đến hạn.
  2. Tạo một MapiTask.
  3. Đặt trạng thái nhiệm vụ thành NotAssigned.
  4. Tạo đối tượng định kỳ hàng ngày bằng cách đặt các thuộc tính như PatternType, Period, WeekStartDay, EndTypeOccurenceCount.
  5. Đặt thuộc tính MapiTask.setRecurrence thành đối tượng định kỳ hàng ngày này.
  6. Lưu tin nhắn này vào đĩa.

Đoạn mã sau đây cho bạn thấy cách tạo một nhiệm vụ với loại kết thúc định kỳ là 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);

Hàm sau có thể được sử dụng để tính số sự kiện giữa hai ngày:

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();
}

Đặt Giá trị Số Lần Xuất Hiện

Đoạn mã sau đây cho bạn thấy cách đặt giá trị số lần xuất hiện.

// 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);

Định kỳ Hàng ngày: Loại EndAfterDate

"End By" tuỳ chọn trong Mapi Task được thực hiện bằng cách đặt thuộc tính OccurrenceCount được tính bởi hàm getOccurrenceCount(). Hàm này nhận ngày bắt đầu, ngày kết thúc và chuỗi RRULE.

Định kỳ Hàng ngày: Đặt Giá trị Every Day

Đoạn mã sau đây cho bạn thấy cách đặt giá trị period là 1 và giá trị INTERVAL là 1 trong chuỗi RRULE.

// 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);

Giá trị Every Day có thể được đặt thành bất kỳ giá trị thích hợp nào như trong ví dụ sau:

// 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"));

Định kỳ Hàng ngày: Loại NeverEnd

Loại kết thúc có thể được đặt bằng cách sử dụng MapiCalendarRecurrenceEndType.NeverEnd. Period hoặc INTERVAL có thể được đặt thành giá trị yêu cầu, ví dụ 1 trong ví dụ sau.

// 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);

Làm việc với Định kỳ Hàng tuần

Aspose.Email cung cấp các tính năng phong phú để tạo định kỳ hàng tuần bằng cách sử dụng MapiCalendarWeeklyRecurrencePattern. Ba loại kết thúc định kỳ lịch Mapi khác nhau có thể được sử dụng bao gồm EndAfterNOccurrences, EndAfterDateNeverEnd. Phần này trình bày cách tạo các mẫu định kỳ hàng tuần khác nhau.

Định kỳ Hàng tuần: Loại EndAfterNOccurrences

Trong loại định kỳ này, số lần lặp lại cần được đặt cùng với các thông tin khác như sau:

  1. Đặt ngày bắt đầu, kết thúc và ngày đến hạn.
  2. Tạo một MapiTask.
  3. Đặt trạng thái nhiệm vụ thành NotAssigned.
  4. Tạo đối tượng định kỳ hàng tuần bằng cách đặt các thuộc tính như PatternType, Period, WeekStartDay, EndTypeOccurenceCount.
  5. Đặt thuộc tính MapiTask.setRecurrence thành đối tượng định kỳ hàng tuần này.
  6. Lưu tin nhắn này vào đĩa.

Đoạn mã sau đây cho bạn thấy cách tạo một nhiệm vụ với loại kết thúc định kỳ là 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);

Hàm sau có thể được sử dụng để tính số sự kiện giữa hai ngày:

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();
}

Chọn Nhiều Ngày trong Một Tuần

Đoạn mã sau đây cho bạn thấy cách chọn nhiều ngày trong một tuần.

// 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"));

Chọn Nhiều Ngày trong Một Tuần và Đặt Khoảng Thời gian

Đoạn mã sau đây cho bạn thấy cách chọn nhiều ngày trong một tuần và đặt khoảng thời gian.

// 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"));

Định kỳ Hàng tuần: Loại EndAfterDate

"End By" tuỳ chọn trong Mapi Task được thực hiện bằng cách đặt thuộc tính OccurrenceCount được tính bởi hàm getOccurrenceCount(). Hàm này nhận ngày bắt đầu, ngày kết thúc và chuỗi RRULE.

Định kỳ Hàng tuần: Đặt Giá trị Every Day

Đoạn mã sau đây cho bạn thấy cách đặt giá trị period là 1 và giá trị INTERVAL là 1 trong chuỗi RRULE.

// 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"));

Giá trị Every Day có thể được đặt thành bất kỳ giá trị thích hợp nào và có thể chọn nhiều ngày như trong ví dụ sau:

// 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"));

Định kỳ Hàng tuần: Loại NeverEnd

Loại kết thúc có thể được đặt bằng cách sử dụng MapiCalendarRecurrenceEndType.NeverEnd. Period hoặc INTERVAL có thể được đặt thành giá trị yêu cầu, ví dụ 1 trong ví dụ sau.

// 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"));

Làm việc với Định kỳ Hàng tháng

Aspose.Email hỗ trợ tạo định kỳ hàng tháng bằng cách sử dụng MapiCalendarMonthlyRecurrencePattern. Ba loại kết thúc định kỳ lịch Mapi khác nhau có thể được sử dụng bao gồm EndAfterNOccurrences, EndAfterDateNeverEnd. Phần này trình bày cách tạo các mẫu định kỳ hàng tháng khác nhau.

Định kỳ Hàng tháng: Loại EndAfterNOccurrences

Trong loại định kỳ này, số lần lặp lại cần được đặt cùng với các thông tin khác như sau:

  1. Đặt ngày bắt đầu, kết thúc và ngày đến hạn.
  2. Tạo một MapiTask.
  3. Đặt trạng thái nhiệm vụ thành NotAssigned.
  4. Tạo đối tượng định kỳ hàng tháng bằng cách đặt các thuộc tính như PatternType, Period, WeekStartDay, EndTypeOccurenceCount.
  5. Đặt thuộc tính MapiTask.setRecurrence thành đối tượng định kỳ hàng tháng này.
  6. Lưu tin nhắn này vào đĩa.

Đoạn mã sau đây cho bạn thấy cách tạo một nhiệm vụ với loại kết thúc định kỳ là 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);

Hàm sau có thể được sử dụng để tính số sự kiện giữa hai ngày:

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();
}

Đặt Số Lần Xảy Ra Cố Định

Đoạn mã sau đây cho bạn thấy cách đặt một số lượng cố định các lần xuất hiện.

// 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);

Định kỳ Hàng tháng: Loại EndAfterDate

"End By" tuỳ chọn trong Mapi Task được thực hiện bằng cách đặt thuộc tính OccurrenceCount được tính bởi hàm getOccurrenceCount(). Hàm này nhận ngày bắt đầu, ngày kết thúc và chuỗi RRULE. Đoạn mã sau đây cho bạn thấy cách tạo một định kỳ vào ngày 15 của mỗi tháng giữa ngày bắt đầu và kết thúc.

// 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);

Định kỳ Hàng tháng: Loại NeverEnd

Đoạn mã sau đây cho bạn thấy cách đặt loại kết thúc bằng cách sử dụng 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);

Làm việc với Định kỳ Hàng năm

Aspose.Email hỗ trợ tạo định kỳ hàng năm bằng cách sử dụng MapiCalendarMonthlyRecurrencePattern. Bằng cách đặt thuộc tính period là 12, chúng ta có thể đạt được mẫu định kỳ hàng năm. Ba loại kết thúc định kỳ lịch Mapi khác nhau có thể được sử dụng bao gồm EndAfterNOccurrences, EndAfterDateNeverEnd. Phần này trình bày cách tạo các mẫu định kỳ hàng năm khác nhau.

Định kỳ Hàng năm: Loại EndAfterNOccurrences

Trong loại định kỳ này, số lần lặp lại cần được đặt cùng với các thông tin khác như sau:

  1. Đặt ngày bắt đầu, kết thúc và ngày đến hạn.
  2. Tạo một MapiTask.
  3. Đặt trạng thái nhiệm vụ thành NotAssigned.
  4. Tạo đối tượng định kỳ hàng tháng bằng cách đặt các thuộc tính như PatternType, Period, WeekStartDay, EndTypeOccurenceCount.
  5. Đặt thuộc tính MapiTask.setRecurrence thành đối tượng định kỳ hàng tháng này để đạt được định kỳ hàng năm.
  6. Lưu tin nhắn này vào đĩa.

Đoạn mã sau đây cho bạn thấy cách tạo một nhiệm vụ với loại kết thúc định kỳ là 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);

Định kỳ Hàng năm: Loại EndAfterDate

"End By" tuỳ chọn trong Mapi Task được thực hiện bằng cách đặt thuộc tính OccurrenceCount được tính bởi hàm getOccurrenceCount(). Hàm này nhận ngày bắt đầu, ngày kết thúc và chuỗi RRULE. Đoạn mã sau đây cho bạn thấy cách tạo một định kỳ vào ngày 15 của mỗi tháng thứ 7 giữa ngày bắt đầu và kết thúc.

// 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"));

Định kỳ Hàng năm: Loại NeverEnd

Đoạn mã sau đây cho bạn thấy cách đặt loại kết thúc bằng cách sử dụng 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);

Tạo Định kỳ từ Quy tắc Định kỳ

API Aspose.Email cung cấp khả năng tạo Mẫu Định kỳ từ Quy tắc Định kỳ (RRULE). Nó phân tích thông tin từ RRULE theo chuẩn RFC 5545 iCal và tạo mẫu định kỳ bằng phương thức MapiCalendarRecurrencePatternFactory.fromString. Đoạn mã sau đây cho bạn thấy cách tạo mẫu định kỳ từ quy tắc định kỳ.

// 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));

Thêm Tệp đính kèm vào Các Sự kiện Lịch Định kỳ

API Aspose.Email cung cấp khả năng thêm tệp đính kèm vào các sự kiện lịch định kỳ.

// 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);
}

Đặt Múi giờ Sự kiện Lịch

API Aspose.Email cung cấp khả năng đặt múi giờ lịch:

  • thông tin múi giờ cho ngày bắt đầu/kết thúc
  • thông tin múi giờ cho một cuộc họp định kỳ
  • thông tin múi giờ mô tả cách chuyển đổi ngày và giờ họp trong một chuỗi định kỳ tới và từ UTC

Đoạn mã sau đây cho bạn thấy cách đặt thông tin múi giờ lịch:

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);