openharmony 鸿蒙 js-apis-calendarManager

2025-06-12 浏览 (1)

@ohos.calendarManager (Calendar Manager)

The calendarManager module provides APIs for calendar and event management, including those for creating, deleting, modifying, and querying calendars and events.

  • A CalendarManager object is used to manage Calendar objects.

  • A Calendar object contains the account information CalendarAccount and configuration information CalendarConfig. An Event object is subordinate to a Calendar object. To create an Event object, you need to create a Calendar object first. A Calendar contains multiple Event objects, but an Event belongs to only one Calendar. CalendarManager is used to manage calendars, and EventFilter is used to manage events.

NOTE

The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.

Modules to Import

import { calendarManager } from '@kit.CalendarKit';

calendarManager.getCalendarManager

getCalendarManager(context: Context): CalendarManager

Obtains a CalendarManager object based on the context.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

Model restriction: This API can be used only in the stage model.

Parameters

NameTypeMandatoryDescription
contextContextYesApplication context. For details about the application context of the stage model, see Context.

Return value

TypeDescription
CalendarManagerCalendarManager object obtained.

Example

// Obtain an mContext object.
// Obtain a calendarMgr object.
// The file is auto-generated: entry/src/main/ets/entryability/EntryAbility.ets
import {
  abilityAccessCtrl,
  AbilityConstant, common, PermissionRequestResult, Permissions, UIAbility, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { calendarManager } from '@kit.CalendarKit';
import { window } from '@kit.ArkUI';

export let calendarMgr: calendarManager.CalendarManager|null = null;
export let mContext: common.UIAbilityContext|null = null;
export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    console.info("Ability onCreate");
  }

  onDestroy(): void {
    console.info("Ability onDestroy");
  }

  onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    console.info("Ability onWindowStageCreate");

    windowStage.loadContent('pages/Index', (err, data) => {
      if (err.code) {
        console.error(`Failed to load the content. Code: ${err.code}, message: ${err.message}`);
        return;
      }
      console.info(`Succeeded in loading the content. Data: ${JSON.stringify(data)}`);
    });
    mContext = this.context;
    const permissions: Permissions[] = ['ohos.permission.READ_CALENDAR', 'ohos.permission.WRITE_CALENDAR'];
    let atManager = abilityAccessCtrl.createAtManager();
    atManager.requestPermissionsFromUser(mContext, permissions).then((result: PermissionRequestResult) => {
      console.info(`get Permission success, result: ${JSON.stringify(result)}`);
      calendarMgr = calendarManager.getCalendarManager(mContext);
    }).catch((error: BusinessError) => {
      console.error(`get Permission error, error. Code: ${error.code}, message: ${error.message}`);
    })
  }

  onWindowStageDestroy(): void {
    // Main window is destroyed, release UI related resources
    console.info("Ability onWindowStageDestroy");
  }

  onForeground(): void {
    // Ability has brought to foreground
    console.info("Ability onForeground");
  }

  onBackground(): void {
    // Ability has back to background
    console.info("Ability onBackground");
  }
}

CalendarManager

Before calling any of the following APIs, you must use getCalendarManager() to obtain a CalendarManager object.

createCalendar

createCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback<Calendar>): void

Creates a Calendar object based on the calendar account information. This API uses an asynchronous callback to return the result.

Required permissions: ohos.permission.WRITE_CALENDAR

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
calendarAccountCalendarAccountYesCalendar account information.
callbackAsyncCallback<Calendar>YesCallback used to return the created Calendar object.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
801Capability not supported.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar: calendarManager.Calendar|undefined = undefined;
const calendarAccount: calendarManager.CalendarAccount = {
  name: 'CreateMyCalendarByCallBack',
  type: calendarManager.CalendarType.LOCAL
};
try {
  calendarMgr?.createCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
    if (err) {
      console.error(`Failed to create calendar. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
      calendar = data;
    }
  });
} catch (error) {
  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
}

createCalendar

createCalendar(calendarAccount: CalendarAccount): Promise<Calendar>

Creates a Calendar object based on the calendar account information. This API uses a promise to return the result.

Required permissions: ohos.permission.WRITE_CALENDAR

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
calendarAccountCalendarAccountYesCalendar account information.

Return value

TypeDescription
Promise<Calendar>Promise used to return the created Calendar object.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
801Capability not supported.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const calendarAccount: calendarManager.CalendarAccount = {
  name: 'CreateMyCalendarByPromise',
  type: calendarManager.CalendarType.LOCAL,
  displayName : 'MyApplication'
};
calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
  console.info(`Succeeded in creating calendar data->${JSON.stringify(data)}`);
  calendar = data;
}).catch((error : BusinessError) => {
  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
});

deleteCalendar

deleteCalendar(calendar: Calendar, callback: AsyncCallback<void>): void

Deletes a specified Calendar object. This API uses an asynchronous callback to return the result.

Required permissions: ohos.permission.WRITE_CALENDAR

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
calendarCalendarYesCalendar object to delete.
callbackAsyncCallback<void>YesAsynchronous callback that returns no value.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
801Capability not supported.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

const calendarAccount: calendarManager.CalendarAccount = {
  name: 'DeleteMyCalendarByCallBack',
  type: calendarManager.CalendarType.LOCAL
};
calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
  calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
    if (err) {
      console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
      calendarMgr?.deleteCalendar(data, (err1: BusinessError) => {
        if (err1) {
          console.error(`Failed to delete calendar. Code: ${err1.code}, message: ${err1.message}`);
        } else {
          console.info("Succeeded in deleting calendar");
        }
      });
    }
  });
}).catch((error: BusinessError) => {
  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
})

deleteCalendar

deleteCalendar(calendar: Calendar): Promise<void>

Deletes a specified Calendar object. This API uses a promise to return the result.

Required permissions: ohos.permission.WRITE_CALENDAR

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
calendarCalendarYesCalendar object to delete.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
801Capability not supported.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

const calendarAccount: calendarManager.CalendarAccount = {
  name: 'DeleteMyCalendarByPromise',
  type: calendarManager.CalendarType.LOCAL
};
calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
  calendarMgr?.getCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendarMgr?.deleteCalendar(data).then(() => {
      console.info("Succeeded in deleting calendar");
    }).catch((err: BusinessError) => {
      console.error(`Failed to delete calendar. Code: ${err.code}, message: ${err.message}`);
    });
  }).catch((err: BusinessError) => {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  });
}).catch((error: BusinessError) => {
  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
})

getCalendar

getCalendar(callback: AsyncCallback<Calendar>): void

Obtains the default Calendar object, which is created when the data storage runs for the first time. This API uses an asynchronous callback to return the result. You can call this API instead of createCalendar() to use the default calendar for a new event.

Required permissions: ohos.permission.READ_CALENDAR

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<Calendar>YesCallback used to return the obtained Calendar object.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
801Capability not supported.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
  }
});

getCalendar

getCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback<Calendar>): void

Obtains a specified Calendar object. This API uses an asynchronous callback to return the result.

Required permissions: ohos.permission.READ_CALENDAR

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
calendarAccountCalendarAccountYesCalendar account information.
callbackAsyncCallback<Calendar>YesCallback used to return the obtained Calendar object.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
801Capability not supported.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const calendarAccount: calendarManager.CalendarAccount = {
  name: 'MyCalendar',
  type: calendarManager.CalendarType.LOCAL
};
calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
  calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
    if (err) {
      console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`);
      calendar = data;
    }
  });
}).catch((error: BusinessError) => {
  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
})

getCalendar

getCalendar(calendarAccount?: CalendarAccount): Promise<Calendar>

Obtains the default Calendar object or a specified Calendar object. This API uses a promise to return the result.

Required permissions: ohos.permission.READ_CALENDAR

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
calendarAccountCalendarAccountNoCalendar account information, which is used to obtain a specified Calendar object. If this parameter is not set, the default Calendar object is obtained.

Return value

TypeDescription
Promise<Calendar>Promise used to return the obtained Calendar object.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error. Possible causes: Incorrect parameter types.
801Capability not supported.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => {
  console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
  calendar = data;
}).catch((err: BusinessError) => {
  console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
});

getAllCalendars

getAllCalendars(callback: AsyncCallback<Calendar[]>): void

Obtains the created and default Calendar objects of the current application. This API uses an asynchronous callback to return the result.

Required permissions: ohos.permission.READ_CALENDAR

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<Calendar[]>YesCallback used to return an array of the obtained Calendar objects.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
801Capability not supported.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

calendarMgr?.getAllCalendars((err: BusinessError, data: calendarManager.Calendar[]) => {
  if (err) {
    console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`);
    data.forEach((calendar) => {
      const account = calendar.getAccount();
      console.info(`account -> ${JSON.stringify(account)}`);
    })
  }
});

getAllCalendars

getAllCalendars(): Promise<Calendar[]>

Obtains the created and default Calendar objects of the current application. This API uses a promise to return the result.

Required permissions: ohos.permission.READ_CALENDAR

System capability: SystemCapability.Applications.CalendarData

Return value

TypeDescription
Promise<Calendar[]>Promise used to return an array of obtained Calendar objects.

Error codes

For details about the error codes, see Universal Error Codes.

IDError Message
201Permission denied.
401Parameter error. Possible causes: Incorrect parameter types.
801Capability not supported.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

calendarMgr?.getAllCalendars().then((data: calendarManager.Calendar[]) => {
  console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`);
  data.forEach((calendar) => {
    const account = calendar.getAccount();
    console.info(`account -> ${JSON.stringify(account)}`);
  })
}).catch((err: BusinessError) => {
  console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`);
});

editEvent12+

editEvent(event: Event): Promise<number>

Creates a single event. If the input parameter Event is not set to the event ID, the event creation screen is displayed when this API is called. This API uses a promise to return the result. Events created using this API cannot be queried or modified by third-party applications, but only by the system calendar.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
eventEventYesEvent object.

Return value

TypeDescription
Promise<number>Promise used to return the event ID. The event ID is the unique identifier of an event and is the auto-increment primary key of the database. If the event creation fails, no value is returned; if the value is less than 0, the event creation is canceled; if the value is greater than 0, the event creation is successful. The return value cannot be 0

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

const date = new Date();
const event: calendarManager.Event = {
  title: 'title',
  type: calendarManager.EventType.NORMAL,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.editEvent(event).then((eventId: number): void => {
  console.info(`create Event id = ${eventId}`);
}).catch((err: BusinessError) => {
  console.error(`Failed to create Event. Code: ${err.code}, message: ${err.message}`);
});

Calendar

In the following API examples, you need to use createCalendar() or getCalendar() to obtain a Calendar object before calling related APIs.

Attributes

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

NameTypeRead OnlyOptionalDescription
idnumberYesNoCalendar account ID, which is the unique identifier of a calendar account and is the auto-increment primary key of the database. If the value is less than 0, the account creation fails; if the value is greater than 0, the account creation succeeds.

addEvent

addEvent(event: Event, callback: AsyncCallback<number>): void

Creates an event, with no event ID specified in Event. This API uses an asynchronous callback to return the result.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
eventEventYesEvent object.
callbackAsyncCallback<number>YesCallback used to return the event ID. The event ID is the unique identifier of an event and is the auto-increment primary key of the database. If the value is less than 0, the event creation fails; if the value is greater than 0, the event creation succeeds.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const date = new Date();
const event: calendarManager.Event = {
  type: calendarManager.EventType.NORMAL,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => {
  console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
  calendar = data;
  calendar.addEvent(event, (err: BusinessError, data: number): void => {
    if (err) {
      console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info(`Succeeded in adding event, id -> ${data}`);
    }
  });
}).catch((err: BusinessError) => {
  console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
});

addEvent

addEvent(event: Event): Promise<number>

Creates an event, with no event ID specified in Event. This API uses a promise to return the result.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
eventEventYesEvent object.

Return value

TypeDescription
Promise<number>Promise used to return the event ID.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const date = new Date();
const event: calendarManager.Event = {
  type: calendarManager.EventType.NORMAL,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    calendar.addEvent(event).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

addEvents

addEvents(events: Event[], callback: AsyncCallback<void>): void

Creates events in batches, with no event ID specified in Event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
eventsEvent[]YesArray of Event objects.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const date = new Date();
const events: calendarManager.Event[] = [
  {
    type: calendarManager.EventType.NORMAL,
    startTime: date.getTime(),
    endTime: date.getTime() + 60 * 60 * 1000
  },
  {
    type: calendarManager.EventType.NORMAL,
    startTime: date.getTime(),
    endTime: date.getTime() + 60 * 60 * 1000
  }
];
calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    calendar.addEvents(events, (err: BusinessError) => {
      if (err) {
        console.error(`Failed to add events. Code: ${err.code}, message: ${err.message}`);
      } else {
        console.info("Succeeded in adding events");
      }
    });
  }
});

addEvents

addEvents(events: Event[]): Promise<void>

Creates events in batches, with no event ID specified in Event. This API uses a promise to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
eventsEvent[]YesArray of Event objects.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const date = new Date();
const events: calendarManager.Event[] = [
  {
    type: calendarManager.EventType.NORMAL,
    startTime: date.getTime(),
    endTime: date.getTime() + 60 * 60 * 1000
  },
  {
    type: calendarManager.EventType.NORMAL,
    startTime: date.getTime(),
    endTime: date.getTime() + 60 * 60 * 1000
  }
];
calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    calendar.addEvents(events).then(() => {
      console.info("Succeeded in adding events");
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

deleteEvent

deleteEvent(id: number, callback: AsyncCallback<void>): void

Deletes an event with the specified ID. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
idnumberYesEvent ID, which is the unique identifier of an event. If the input event ID is a positive integer, the event is created.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
let id: number = 0;
const date = new Date();
const event: calendarManager.Event = {
  type: calendarManager.EventType.NORMAL,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    calendar.addEvent(event).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
      id = data;
      calendar?.deleteEvent(id, (err: BusinessError) => {
        if (err) {
          console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`);
        } else {
          console.info(`Succeeded in deleting event, err -> ${JSON.stringify(err)}`);
        }
      });
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

deleteEvent

deleteEvent(id: number): Promise<void>

Deletes an event with the specified ID. This API uses a promise to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
idnumberYesEvent ID.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
let id: number = 0;
const date = new Date();
const event: calendarManager.Event = {
  type: calendarManager.EventType.NORMAL,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar data->${JSON.stringify(data)}`);
    calendar = data;
    await calendar.addEvent(event).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
      id = data;
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    calendar.deleteEvent(id).then(() => {
      console.info("Succeeded in deleting event");
    }).catch((err: BusinessError) => {
      console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

deleteEvents

deleteEvents(ids: number[], callback: AsyncCallback<void>): void

Deletes a batch of events with the specified IDs. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
idsnumber[]YesArray of event IDs.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
let id1: number = 0;
let id2: number = 0;
const date = new Date();
const event1: calendarManager.Event = {
  type: calendarManager.EventType.NORMAL,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
const event2: calendarManager.Event = {
  type: calendarManager.EventType.IMPORTANT,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    await calendar.addEvent(event1).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
      id1 = data;
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    await calendar.addEvent(event2).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
      id2 = data;
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    calendar.deleteEvents([id1, id2], (err: BusinessError) => {
      if (err) {
        console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`);
      } else {
        console.info("Succeeded in deleting events");
      }
    });
  }
});

deleteEvents

deleteEvents(ids: number[]): Promise<void>

Deletes a batch of events with the specified IDs. This API uses a promise to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
idsnumber[]YesArray of event IDs.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
let id1: number = 0;
let id2: number = 0;
const date = new Date();
const event1: calendarManager.Event = {
  type: calendarManager.EventType.NORMAL,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
const event2: calendarManager.Event = {
  type: calendarManager.EventType.IMPORTANT,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    await calendar.addEvent(event1).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
      id1 = data;
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    await calendar.addEvent(event2).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
      id2 = data;
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    calendar.deleteEvents([id1, id2]).then(() => {
      console.info("Succeeded in deleting events");
    }).catch((err: BusinessError) => {
      console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

updateEvent

updateEvent(event: Event, callback: AsyncCallback<void>): void

Updates an event. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
eventEventYesEvent object.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const date = new Date();
const oriEvent: calendarManager.Event = {
  title: 'update',
  type: calendarManager.EventType.NORMAL,
  description: 'updateEventTest',
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    await calendar.addEvent(oriEvent).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
      oriEvent.id = data;
      oriEvent.title = 'newUpdate';
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    calendar.updateEvent(oriEvent, (err: BusinessError) => {
      if (err) {
        console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`);
      } else {
        console.info("Succeeded in updating event");
      }
    });
  }
});

updateEvent

updateEvent(event: Event): Promise<void>

Updates an event. This API uses a promise to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
eventEventYesEvent object.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const date = new Date();
const oriEvent: calendarManager.Event = {
  title: 'update',
  type: calendarManager.EventType.NORMAL,
  description: 'updateEventTest',
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    await calendar.addEvent(oriEvent).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
      oriEvent.id = data;
      oriEvent.title = 'newUpdate';
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    calendar.updateEvent(oriEvent).then(() => {
      console.info(`Succeeded in updating event`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

getEvents

getEvents(callback: AsyncCallback<Event[]>): void

Obtains all events in the current calendar. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<Event[]>YesCallback used to return an array of events.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`);
    calendar = data;
    calendar.getEvents((err: BusinessError, data: calendarManager.Event[]) => {
      if (err) {
        console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
      } else {
        console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
      }
    });
  }
});

getEvents

getEvents(eventFilter: EventFilter, eventKey: (keyof Event)[], callback: AsyncCallback<Event[]>):void

Obtains all events in a calendar that match the filter criteria. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
eventFilterEventFilterYesFilter criteria.
eventKey(keyof Event)[]YesFilter field.
callbackAsyncCallback<Event[]>YesCallback used to return an array of events.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
let id1: number = 0;
let id2: number = 0;
const date = new Date();
const event1: calendarManager.Event = {
  type: calendarManager.EventType.NORMAL,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
const event2: calendarManager.Event = {
  type: calendarManager.EventType.IMPORTANT,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    await calendar.addEvent(event1).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    await calendar.addEvent(event2).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    const filter = calendarManager.EventFilter.filterById([id1, id2]);
    calendar.getEvents(filter, ['title', 'type', 'startTime', 'endTime'], (err: BusinessError, data: calendarManager.Event[]) => {
      if (err) {
        console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
      } else {
        console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
      }
    });
  }
});

getEvents

getEvents(eventFilter?: EventFilter, eventKey?: (keyof Event)[]): Promise<Event[]>

Obtains all events in a calendar that match the filter criteria. This API uses a promise to return the result. If there is only one input parameter, the filter criteria, corresponding to the type EventFilter, must be set as the parameter.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
eventFilterEventFilterNoFilter criteria.
eventKey(keyof Event)[]NoFilter field.

Return value

TypeDescription
Promise<Event[]>Promise used to return the result, which is an array of Event objects.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const date = new Date();
const event: calendarManager.Event = {
  title: 'MyEvent',
  type: calendarManager.EventType.IMPORTANT,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    await calendar.addEvent(event).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    // Perform fuzzy query based on MyEvent. If an event of the MyEvent1 type exists, the event can also be queried.
    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
      console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

getConfig

getConfig(): CalendarConfig

Obtains the calendar configuration information.

System capability: SystemCapability.Applications.CalendarData

Return value

TypeDescription
CalendarConfigCalendar configuration information.

Example

import { calendarMgr } from '../entryability/EntryAbility';
import { BusinessError } from '@kit.BasicServicesKit';

let calendar : calendarManager.Calendar|undefined = undefined;
calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    const config = calendar.getConfig();
    console.info("Succeeded in getting config");
  }
});

setConfig

setConfig(config: CalendarConfig, callback: AsyncCallback<void>): void

Sets the calendar configuration information. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
configCalendarConfigYesCalendar configuration information.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const config: calendarManager.CalendarConfig = {
  enableReminder: true,
  color: '#aabbcc'
};
calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    calendar.setConfig(config, (err: BusinessError) => {
      if (err) {
        console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
      } else {
        console.info(`Succeeded in setting config, config -> ${JSON.stringify(config)}`);
      }
    });
  }
});

setConfig

setConfig(config: CalendarConfig): Promise<void>

Sets the calendar configuration information. This API uses a promise to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
configCalendarConfigYesCalendar configuration information.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const config: calendarManager.CalendarConfig = {
  enableReminder: true,
  color: '#aabbcc'
};
calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    calendar.setConfig(config).then(() => {
      console.info(`Succeeded in setting config, data->${JSON.stringify(config)}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

getAccount

getAccount(): CalendarAccount

Obtains the calendar account information.

System capability: SystemCapability.Applications.CalendarData

Return value

TypeDescription
CalendarAccountCalendar account information.

Example

import { calendarMgr } from '../entryability/EntryAbility';
import { BusinessError } from '@kit.BasicServicesKit';

let calendar : calendarManager.Calendar|undefined = undefined;
calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    const account = calendar.getAccount();
    console.info(`succeeded in getting account, account -> ${JSON.stringify(account)}`);
  }
});

queryEventInstances18+

Atomic service API: This API can be used in atomic services since API version 18.

queryEventInstances(start: number, end: number, ids?: number[], eventKey?: (keyof Event)[]): Promise<Event[]>

Queries the event instance with a specified event key in a calendar. This API uses a promise to return the result.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
startnumberYesStart time of an event. The value is a 13-digit timestamp.
endnumberYesEnd time of an event. The value is a 13-digit timestamp.
idsnumber[]NoArray of event IDs to be queried, which can be empty or undefined. Otherwise, the value of each ID must be greater than 0.
eventKey(keyof Event)[]NoEvent key for querying events.

Return value

TypeDescription
Promise<Event[]>Promise used to return the result, which is an array of Event objects.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const date = new Date();
const event: calendarManager.Event = {
  title: 'MyEvent',
  type: calendarManager.EventType.IMPORTANT,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    await calendar.addEvent(event).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    calendar?.queryEventInstances(date.getTime(), date.getTime() + 60 * 60 * 1000, undefined, 
      ["title", "startTime", "endTime", "instanceStartTime", "instanceEndTime",]).then((data: calendarManager.Event[]) => {
      console.info(`Succeeded in getting event instances, data -> ${JSON.stringify(data)}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to get event instances. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

CalendarAccount

Describes the calendar account information.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

NameTypeRead OnlyOptionalDescription
namestringYesNoAccount name (for developers).
typeCalendarTypeNoNoAccount type.
displayNamestringNoYesAccount name displayed on the calendar application (for users). If this parameter is not set, an empty string is used.

CalendarConfig

Describes the calendar configuration information.

System capability: SystemCapability.Applications.CalendarData

NameTypeRead OnlyOptionalDescription
enableReminderbooleanNoYesWhether to enable the reminder for events in the calendar. The value true means to enable the reminder for events in the calendar, and false means the opposite. The default value is true.
colornumber |stringNoYesCalendar color. If this parameter is not set, the default value '#0A59F7' is used.

Event

Describes an Event object, including the event title, start time, and end time.

System capability: SystemCapability.Applications.CalendarData

NameTypeRead OnlyOptionalDescription
idnumberNoYesEvent ID. This parameter does not need to be set in addEvent() or addEvents().
Atomic service API: This API can be used in atomic services since API version 11.
typeEventTypeNoNoEvent type.
Atomic service API: This API can be used in atomic services since API version 11.
titlestringNoYesEvent title. If this parameter is not set, an empty string is used.
Atomic service API: This API can be used in atomic services since API version 11.
locationLocationNoYesEvent location. If this parameter is not set, the default null value is used.
Atomic service API: This API can be used in atomic services since API version 11.
startTimenumberNoNoStart time of the event. The value is a 13-digit timestamp.
Atomic service API: This API can be used in atomic services since API version 11.
endTimenumberNoNoEnd time of the event. The value is a 13-digit timestamp.
Atomic service API: This API can be used in atomic services since API version 11.
isAllDaybooleanNoYesWhether the event is an all-day event. The value true means that the event is an all-day event, and false means the opposite. The default value is false.
Atomic service API: This API can be used in atomic services since API version 11.
attendeeAttendee[]NoYesAttendee information of a conference event. If this parameter is not set, the default null value is used.
Atomic service API: This API can be used in atomic services since API version 11.
timeZonestringNoYesTime zone of the event. If this parameter is not set, the current system time zone is used. You can call getTimeZone() to obtain the current system time zone.
Atomic service API: This API can be used in atomic services since API version 11.
reminderTimenumber[]NoYesAmount of time that the reminder occurs before the start of the event, in minutes. For example, if the value is 5, the reminder occurs 5 minutes before the event starts. If this parameter is not set, no reminder is set. A negative value indicates the delay time for sending a notification.
Atomic service API: This API can be used in atomic services since API version 11.
recurrenceRuleRecurrenceRuleNoYesRecurrence rule of an event. If this parameter is not set, the value does not recur.
Atomic service API: This API can be used in atomic services since API version 11.
descriptionstringNoYesEvent description. If this parameter is not set, an empty string is used.
Atomic service API: This API can be used in atomic services since API version 11.
serviceEventServiceNoYesEvent service. If this parameter is not set, no service is available. This function is not supported currently.
Atomic service API: This API can be used in atomic services since API version 11.
identifier12+stringNoYesA unique ID of an event can be specified. If this parameter is not set, the default null value is used.
Atomic service API: This API can be used in atomic services since API version 12.
isLunar12+booleanNoYesWhether it is a lunar calendar event. The value true means that the event is a lunar calendar event, and false means the opposite. The default value is false.
Atomic service API: This API can be used in atomic services since API version 12.
instanceStartTime18+numberNoYesStart time of the event. The value is a 13-digit timestamp. This parameter does not need to be set in addEvent() or addEvents().
Atomic service API: This API can be used in atomic services since API version 18.
instanceEndTime18+numberNoYesEnd time of the event. The value is a 13-digit timestamp. This parameter does not need to be set in addEvent() or addEvents().
Atomic service API: This API can be used in atomic services since API version 18.

CalendarType

Enumerates the account types.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

NameValueDescription
LOCAL'local'Local account.
EMAIL'email'Email account.
BIRTHDAY'birthday'Birthday account.
CALDAV'caldav'CalDAV account.
SUBSCRIBED'subscribed'Subscription account.

Location

Describes the event location.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

NameTypeRead OnlyOptionalDescription
locationstringNoYesLocation. The default value is an empty string.
longitudenumberNoYesLongitude of the location. The default value is 0.
latitudenumberNoYesLatitude of the location. The default value is 0.

EventFilter

Implements an event filter.

You can use filterById(), filterByTime(), or filterByTitle() to obtain an event filter, and then pass the filter in getEvents() for filtering.

filterById

static filterById(ids: number[]): EventFilter

Defines an event ID based filter.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
idsnumber[]YesArray of event IDs.

Return value

TypeDescription
EventFilterEventFilter object.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
let id1: number = 0;
let id2: number = 0;
const date = new Date();
const event1: calendarManager.Event = {
  type: calendarManager.EventType.NORMAL,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
const event2: calendarManager.Event = {
  type: calendarManager.EventType.IMPORTANT,
  startTime: date.getTime(),
  endTime: date.getTime() + 60 * 60 * 1000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    await calendar.addEvent(event1).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
      id1 = data;
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    await calendar.addEvent(event2).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
      id2 = data;
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    const filter = calendarManager.EventFilter.filterById([id1, id2]);
    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
      console.info(`Succeeded in getting events filter by id, data -> ${JSON.stringify(data)}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to filter by id. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

filterByTime

static filterByTime(start: number, end: number): EventFilter

Defines an event time based filter.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
startnumberYesStart time.
endnumberYesEnd time.

Return value

TypeDescription
EventFilterEventFilter object.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const event1: calendarManager.Event = {
  type: calendarManager.EventType.NORMAL,
  startTime: 1686931200000,
  endTime: 1687017600000
};
const event2: calendarManager.Event = {
  type: calendarManager.EventType.IMPORTANT,
  startTime: 1686931200000,
  endTime: 1687017600000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    await calendar.addEvent(event1).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    await calendar.addEvent(event2).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    const filter = calendarManager.EventFilter.filterByTime(1686931200000, 1687017600000);
    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
      console.info(`Succeeded in getting events filter by time, data -> ${JSON.stringify(data)}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to filter by time. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

filterByTitle

static filterByTitle(title: string): EventFilter

Filters events by event title. This API supports fuzzy match.

System capability: SystemCapability.Applications.CalendarData

Parameters

NameTypeMandatoryDescription
titlestringYesEvent title.

Return value

TypeDescription
EventFilterEventFilter object.

Example

import { BusinessError } from '@kit.BasicServicesKit';
import { calendarMgr } from '../entryability/EntryAbility';

let calendar : calendarManager.Calendar|undefined = undefined;
const event: calendarManager.Event = {
  title: 'MyEvent',
  type: calendarManager.EventType.NORMAL,
  startTime: 1686931200000,
  endTime: 1687017600000
};
calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
  if (err) {
    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
  } else {
    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
    calendar = data;
    await calendar.addEvent(event).then((data: number) => {
      console.info(`Succeeded in adding event, id -> ${data}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
    });
    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
      console.info(`Succeeded in getting events filter by title, data -> ${JSON.stringify(data)}`);
    }).catch((err: BusinessError) => {
      console.error(`Failed to filter by title. Code: ${err.code}, message: ${err.message}`);
    });
  }
});

EventType

Enumerates event types.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

NameValueDescription
NORMAL0Normal event, such as conference or an alarm clock.
IMPORTANT1Important event, such as wedding anniversary, are not recommended for third-party developers. Important events do not support one-click service redirection and custom reminder time.

RecurrenceRule

Describes the recurrence rule of an event.

System capability: SystemCapability.Applications.CalendarData

NameTypeRead OnlyOptionalDescription
recurrenceFrequencyRecurrenceFrequencyNoNoType of the event recurrence rule.
Atomic service API: This API can be used in atomic services since API version 11.
expirenumberNoYesEnd date of the recurrence period. If this parameter is not set, the default value 0 is used.
Atomic service API: This API can be used in atomic services since API version 11.
count12+numberNoYesNumber of the recurrent event. The value is a non-negative integer. If this parameter is not set, the default value 0 is used, indicating that the number of recurrent events is infinite; if the value is negative, the effect is the same as that of 0. If both count and expire exist, count is used.
Atomic service API: This API can be used in atomic services since API version 12.
interval12+numberNoYesInterval for a recurrent event. The value is a non-negative integer. If this parameter is not set, the default value 0 is used, indicating that the event is repeated based on the recurrence rule without intervals; if the value is negative, the effect is the same as that of 0. If both interval and expire exist, expire is used.
This attribute is related to the recurrenceFrequency rule. The recurrence interval varies according to the recurrence rule. For example, if the interval value is 2, the following situations occur:
Daily recurrence: The event repeats every two days.
Weekly recurrence: The event repeats every two weeks.
Monthly recurrence: The event repeats every two months.
Yearly recurrence: The event repeats every two years.
Atomic service API: This API can be used in atomic services since API version 12.
excludedDates12+number[]NoYesExcluded date of a recurrent event. The value is in the timestamp format. If this parameter is not set, the default value is empty, indicating that no date is excluded; if the value is 0 or a negative number, the effect is the same as that of the empty value.
Atomic service API: This API can be used in atomic services since API version 12.
daysOfWeek12+number[]NoYesRepeats by day of a week. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 7, corresponding to Monday to Sunday. Other values are invalid and have the same effect as the empty value.
Atomic service API: This API can be used in atomic services since API version 12.
daysOfMonth12+number[]NoYesRepeats by day of a month. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 31, corresponding to the first to the last days of each month. Other values are invalid and have the same effect as the empty value. If this month only has 30 days, the value 31 is invalid.
Atomic service API: This API can be used in atomic services since API version 12.
daysOfYear12+number[]NoYesRepeats by day of a year. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 366, corresponding to the first to the last days of each year. Other values are invalid and have the same effect as the empty value. If this year only has 365 days, the value 366 is invalid.
Atomic service API: This API can be used in atomic services since API version 12.
weeksOfMonth12+number[]NoYesRepeats by week of a month. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 5, corresponding to the first to the last weeks of each month. Other values are invalid and have the same effect as the empty value. If this month only has four weeks, the value 5 is invalid.
Atomic service API: This API can be used in atomic services since API version 12.
weeksOfYear12+number[]NoYesRepeats by week of a year. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 53, corresponding to the first to the last weeks of each year. Other values are invalid and have the same effect as the empty value.
Atomic service API: This API can be used in atomic services since API version 12.
monthsOfYear12+number[]NoYesRepeats by month of a year. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 12, corresponding to the first to the last months of each year. Other values are invalid and have the same effect as the empty value.
Atomic service API: This API can be used in atomic services since API version 12.

RecurrenceFrequency

Enumerates the types of the event recurrence rule.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

NameValueDescription
YEARLY0Yearly.
MONTHLY1Monthly.
WEEKLY2Weekly.
DAILY3Daily.

Attendee

Describes the attendee information of a conference event.

System capability: SystemCapability.Applications.CalendarData

NameTypeRead OnlyOptionalDescription
namestringNoNoName of the attendee.
Atomic service API: This API can be used in atomic services since API version 11.
emailstringNoNoEmail address of the attendee.
Atomic service API: This API can be used in atomic services since API version 11.
role12+AttendeeRoleNoYesRole of the attendee.
Atomic service API: This API can be used in atomic services since API version 12.
status18+AttendeeStatusNoYesStatus of the attendee. If this parameter is not set, the default value is empty.
Atomic service API: This API can be used in atomic services since API version 18.
type18+AttendeeTypeNoYesType of the attendee. If this parameter is not set, the default value is empty.
Atomic service API: This API can be used in atomic services since API version 18.

EventService

Describes the event service.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

NameTypeRead OnlyOptionalDescription
typeServiceTypeNoNoService type.
uristringNoNoService URI, in the DeepLink format. It can be used to redirect the user to a page of another application.
descriptionstringNoYesDescription of the service. If this parameter is not set, an empty string is used.

ServiceType

Enumerates the event service types.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Applications.CalendarData

NameValueDescription
MEETING'Meeting'Join a meeting.
WATCHING'Watching'Watch a video.
REPAYMENT'Repayment'Make a payment.
LIVE'Live'Watch live TV.
SHOPPING'Shopping'Go shopping.
TRIP'Trip'View the trip.
CLASS'Class'Join class.
SPORTS_EVENTS'SportsEvents'Watch a sports event.
SPORTS_EXERCISE'SportsExercise'Start exercising.

AttendeeRole12+

Enumerates the attendee role types in a conference event.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.Applications.CalendarData

NameValueDescription
ORGANIZER'organizer'Conference organizer.
PARTICIPANT'participant'Conference participant.

AttendeeStatus18+

Enumerates the status types of an attendee.

Atomic service API: This API can be used in atomic services since API version 18.

System capability: SystemCapability.Applications.CalendarData

NameValueDescription
UNKNOWN0The attendee status is unknown.
TENTATIVE1The attendee status is tentative.
ACCEPTED2The attendee has accepted the conference invitation.
DECLINED3The attendee has rejected the conference invitation.
UNRESPONSIVE4The attendee does not respond.

AttendeeType18+

Enumerates the types of attendees invited to a conference event.

Atomic service API: This API can be used in atomic services since API version 18.

System capability: SystemCapability.Applications.CalendarData

NameValueDescription
REQUIRED1Required attendee.
OPTIONAL2Optional attendee.
RESOURCE3Resources (such as TVs or projectors) used in a conference.

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Calendar Kit

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/N9CP8o