• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.calendarManager (Calendar Manager)
2
3The **calendarManager** module provides APIs for calendar and event management, including those for creating, deleting, modifying, and querying calendars and events.
4
5- A [CalendarManager](#calendarmanager) object is used to manage [Calendar](#calendar) objects.
6
7- A [Calendar](#calendar) object contains the account information [CalendarAccount](#calendaraccount) and configuration information [CalendarConfig](#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.
8
9> **NOTE**
10>
11> 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.
12
13
14## Modules to Import
15
16```typescript
17import { calendarManager } from '@kit.CalendarKit'
18```
19
20## calendarManager.getCalendarManager
21
22getCalendarManager(context : Context): CalendarManager
23
24Obtains a **CalendarManager** object based on the context.
25
26**Atomic service API**: This API can be used in atomic services since API version 11.
27
28**System capability**: SystemCapability.Applications.CalendarData
29
30**Model restriction**: This API can be used only in the stage model.
31
32**Parameters**
33
34| Name  | Type                       | Mandatory| Description                                                                                                            |
35| -------- | --------------------------- | ---- |----------------------------------------------------------------------------------------------------------------|
36| context  | Context                     | Yes  | Application context. For details about the application context of the stage model, see [Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md).|
37
38**Return value**
39
40| Type                          | Description                                 |
41| ------------------------------ | ------------------------------------- |
42| CalendarManager | **CalendarManager** object obtained.|
43
44**Example**
45
46```typescript
47// Obtain an mContext object.
48// Obtain a calendarMgr object.
49// The file is auto-generated: entry/src/main/ets/entryability/EntryAbility.ets
50import {
51  abilityAccessCtrl,
52  AbilityConstant, common, PermissionRequestResult, Permissions, UIAbility, Want } from '@kit.AbilityKit';
53import { BusinessError } from '@kit.BasicServicesKit';
54import { calendarManager } from '@kit.CalendarKit';
55import { window } from '@kit.ArkUI';
56
57export let calendarMgr: calendarManager.CalendarManager | null = null;
58export let mContext: common.UIAbilityContext | null = null;
59export default class EntryAbility extends UIAbility {
60  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
61    console.info("Ability onCreate");
62  }
63
64  onDestroy(): void {
65    console.info("Ability onDestroy");
66  }
67
68  onWindowStageCreate(windowStage: window.WindowStage): void {
69    // Main window is created, set main page for this ability
70    console.info("Ability onWindowStageCreate");
71
72    windowStage.loadContent('pages/Index', (err, data) => {
73      if (err.code) {
74        console.error(`Failed to load the content. Code: ${err.code}, message: ${err.message}`);
75        return;
76      }
77      console.info(`Succeeded in loading the content. Data: ${JSON.stringify(data)}`);
78    });
79    mContext = this.context;
80    const permissions: Permissions[] = ['ohos.permission.READ_CALENDAR', 'ohos.permission.WRITE_CALENDAR'];
81    let atManager = abilityAccessCtrl.createAtManager();
82    atManager.requestPermissionsFromUser(mContext, permissions).then((result: PermissionRequestResult) => {
83      console.log(`get Permission success, result: ${JSON.stringify(result)}`);
84      calendarMgr = calendarManager.getCalendarManager(mContext);
85    }).catch((error: BusinessError) => {
86      console.error(`get Permission error, error. Code: ${error.code}, message: ${error.message}`);
87    })
88  }
89
90  onWindowStageDestroy(): void {
91    // Main window is destroyed, release UI related resources
92    console.info("Ability onWindowStageDestroy");
93  }
94
95  onForeground(): void {
96    // Ability has brought to foreground
97    console.info("Ability onForeground");
98  }
99
100  onBackground(): void {
101    // Ability has back to background
102    console.info("Ability onBackground");
103  }
104}
105```
106
107## CalendarManager
108
109Before calling any of the following APIs, you must use [getCalendarManager()](#calendarmanagergetcalendarmanager) to obtain a **CalendarManager** object.
110
111
112### createCalendar
113
114createCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void
115
116Creates a **Calendar** object based on the calendar account information. This API uses an asynchronous callback to return the result.
117
118**Required permissions**: ohos.permission.WRITE_CALENDAR
119
120**System capability**: SystemCapability.Applications.CalendarData
121
122**Parameters**
123
124| Name         | Type                                 | Mandatory| Description                              |
125| --------------- | ------------------------------------- | ---- | ---------------------------------- |
126| calendarAccount | [CalendarAccount](#calendaraccount)   | Yes  | Calendar account information.                    |
127| callback        | AsyncCallback\<[Calendar](#calendar)> | Yes  | Callback used to return the created **Calendar** object.|
128
129**Error codes**
130
131For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
132
133| ID| Error Message                       |
134| -------- | ------------------------------ |
135| 201      | Permission denied.  |
136| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
137| 801      | Capability not supported.  |
138
139**Example**
140
141```typescript
142import { BusinessError } from '@kit.BasicServicesKit';
143import { calendarMgr } from '../entryability/EntryAbility';
144
145let calendar: calendarManager.Calendar | undefined = undefined;
146const calendarAccount: calendarManager.CalendarAccount = {
147  name: 'CreateMyCalendarByCallBack',
148  type: calendarManager.CalendarType.LOCAL
149};
150try {
151  calendarMgr?.createCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
152    if (err) {
153      console.error(`Failed to create calendar. Code: ${err.code}, message: ${err.message}`);
154    } else {
155      console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
156      calendar = data;
157    }
158  });
159} catch (error) {
160  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
161}
162```
163
164### createCalendar
165
166createCalendar(calendarAccount: CalendarAccount): Promise\<Calendar>
167
168Creates a **Calendar** object based on the calendar account information. This API uses a promise to return the result.
169
170**Required permissions**: ohos.permission.WRITE_CALENDAR
171
172**System capability**: SystemCapability.Applications.CalendarData
173
174**Parameters**
175
176| Name         | Type                               | Mandatory| Description          |
177| --------------- | ----------------------------------- | ---- | -------------- |
178| calendarAccount | [CalendarAccount](#calendaraccount) | Yes  | Calendar account information.|
179
180**Return value**
181
182| Type                          | Description                                 |
183| ------------------------------ | ------------------------------------- |
184| Promise<[Calendar](#calendar)> | Promise used to return the created **Calendar** object.|
185
186**Error codes**
187
188For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
189
190| ID| Error Message                       |
191| -------- | ------------------------------ |
192| 201      | Permission denied.  |
193| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
194| 801      | Capability not supported.  |
195
196**Example**
197
198```typescript
199import { BusinessError } from '@kit.BasicServicesKit';
200import { calendarMgr } from '../entryability/EntryAbility';
201
202let calendar : calendarManager.Calendar | undefined = undefined;
203const calendarAccount: calendarManager.CalendarAccount = {
204  name: 'CreateMyCalendarByPromise',
205  type: calendarManager.CalendarType.LOCAL,
206  displayName : 'MyApplication'
207};
208calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
209  console.info(`Succeeded in creating calendar data->${JSON.stringify(data)}`);
210  calendar = data;
211}).catch((error : BusinessError) => {
212  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
213});
214```
215
216### deleteCalendar
217
218deleteCalendar(calendar: Calendar, callback: AsyncCallback\<void>): void
219
220Deletes a specified **Calendar** object. This API uses an asynchronous callback to return the result.
221
222**Required permissions**: ohos.permission.WRITE_CALENDAR
223
224**System capability**: SystemCapability.Applications.CalendarData
225
226**Parameters**
227
228| Name  | Type                 | Mandatory| Description          |
229| -------- | --------------------- | ---- | -------------- |
230| calendar | [Calendar](#calendar) | Yes  | **Calendar** object to delete.|
231| callback | AsyncCallback\<void>  | Yes  | Asynchronous callback that returns no value.    |
232
233**Error codes**
234
235For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
236
237| ID| Error Message                       |
238| -------- | ------------------------------ |
239| 201      | Permission denied.  |
240| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
241| 801      | Capability not supported.  |
242
243**Example**
244
245```typescript
246import { BusinessError } from '@kit.BasicServicesKit';
247import { calendarMgr } from '../entryability/EntryAbility';
248
249const calendarAccount: calendarManager.CalendarAccount = {
250  name: 'DeleteMyCalendarByCallBack',
251  type: calendarManager.CalendarType.LOCAL
252};
253calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
254  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
255  calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
256    if (err) {
257      console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
258    } else {
259      console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
260      calendarMgr?.deleteCalendar(data, (err1: BusinessError) => {
261        if (err1) {
262          console.error(`Failed to delete calendar. Code: ${err1.code}, message: ${err1.message}`);
263        } else {
264          console.info("Succeeded in deleting calendar");
265        }
266      });
267    }
268  });
269}).catch((error: BusinessError) => {
270  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
271})
272```
273
274### deleteCalendar
275
276deleteCalendar(calendar: Calendar): Promise\<void>
277
278Deletes a specified **Calendar** object. This API uses a promise to return the result.
279
280**Required permissions**: ohos.permission.WRITE_CALENDAR
281
282**System capability**: SystemCapability.Applications.CalendarData
283
284**Parameters**
285
286| Name  | Type                 | Mandatory| Description          |
287| -------- | --------------------- | ---- | -------------- |
288| calendar | [Calendar](#calendar) | Yes  | **Calendar** object to delete.|
289
290**Return value**
291
292| Type          | Description                     |
293| -------------- | ------------------------- |
294| Promise\<void> | Promise that returns no value.|
295
296**Error codes**
297
298For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
299
300| ID| Error Message                       |
301| -------- | ------------------------------ |
302| 201      | Permission denied.  |
303| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
304| 801      | Capability not supported.  |
305
306**Example**
307
308```typescript
309import { BusinessError } from '@kit.BasicServicesKit';
310import { calendarMgr } from '../entryability/EntryAbility';
311
312const calendarAccount: calendarManager.CalendarAccount = {
313  name: 'DeleteMyCalendarByPromise',
314  type: calendarManager.CalendarType.LOCAL
315};
316calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
317  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
318  calendarMgr?.getCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
319    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
320    calendarMgr?.deleteCalendar(data).then(() => {
321      console.info("Succeeded in deleting calendar");
322    }).catch((err: BusinessError) => {
323      console.error(`Failed to delete calendar. Code: ${err.code}, message: ${err.message}`);
324    });
325  }).catch((err: BusinessError) => {
326    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
327  });
328}).catch((error: BusinessError) => {
329  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
330})
331```
332
333### getCalendar
334
335getCalendar(callback: AsyncCallback\<Calendar>): void
336
337Obtains 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()](#createcalendar) to use the default calendar for a new event.
338
339**Required permissions**: ohos.permission.READ_CALENDAR
340
341**Atomic service API**: This API can be used in atomic services since API version 11.
342
343**System capability**: SystemCapability.Applications.CalendarData
344
345**Parameters**
346
347| Name  | Type                                | Mandatory| Description                                |
348| -------- | ------------------------------------ | ---- | ------------------------------------ |
349| callback | AsyncCallback<[Calendar](#calendar)> | Yes  | Callback used to return the obtained **Calendar** object.|
350
351**Error codes**
352
353For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
354
355| ID| Error Message                       |
356| -------- | ------------------------------ |
357| 201      | Permission denied.  |
358| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
359| 801      | Capability not supported.  |
360
361**Example**
362
363```typescript
364import { BusinessError } from '@kit.BasicServicesKit';
365import { calendarMgr } from '../entryability/EntryAbility';
366
367let calendar : calendarManager.Calendar | undefined = undefined;
368calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
369  if (err) {
370    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
371  } else {
372    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
373    calendar = data;
374  }
375});
376```
377
378### getCalendar
379
380getCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void
381
382Obtains a specified **Calendar** object. This API uses an asynchronous callback to return the result.
383
384**Required permissions**: ohos.permission.READ_CALENDAR
385
386**Atomic service API**: This API can be used in atomic services since API version 11.
387
388**System capability**: SystemCapability.Applications.CalendarData
389
390**Parameters**
391
392| Name         | Type                                | Mandatory| Description                                |
393| --------------- | ------------------------------------ | ---- | ------------------------------------ |
394| calendarAccount | [CalendarAccount](#calendaraccount)  | Yes  | Calendar account information.                      |
395| callback        | AsyncCallback<[Calendar](#calendar)> | Yes  | Callback used to return the obtained **Calendar** object.|
396
397**Error codes**
398
399For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
400
401| ID| Error Message                       |
402| -------- | ------------------------------ |
403| 201      | Permission denied.  |
404| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
405| 801      | Capability not supported.  |
406
407**Example**
408
409```typescript
410import { BusinessError } from '@kit.BasicServicesKit';
411import { calendarMgr } from '../entryability/EntryAbility';
412
413let calendar : calendarManager.Calendar | undefined = undefined;
414const calendarAccount: calendarManager.CalendarAccount = {
415  name: 'MyCalendar',
416  type: calendarManager.CalendarType.LOCAL
417};
418calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
419  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
420  calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
421    if (err) {
422      console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
423    } else {
424      console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`);
425      calendar = data;
426    }
427  });
428}).catch((error: BusinessError) => {
429  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
430})
431```
432
433### getCalendar
434
435getCalendar(calendarAccount?: CalendarAccount): Promise\<Calendar>
436
437Obtains the default **Calendar** object or a specified **Calendar** object. This API uses a promise to return the result.
438
439**Required permissions**: ohos.permission.READ_CALENDAR
440
441**Atomic service API**: This API can be used in atomic services since API version 11.
442
443**System capability**: SystemCapability.Applications.CalendarData
444
445**Parameters**
446
447| Name         | Type                               | Mandatory| Description                                                        |
448| --------------- | ----------------------------------- | ---- | ------------------------------------------------------------ |
449| calendarAccount | [CalendarAccount](#calendaraccount) | No  | Calendar account information, which is used to obtain a specified **Calendar** object. If this parameter is not set, the default **Calendar** object is obtained.|
450
451**Return value**
452
453| Type                          | Description                                   |
454| ------------------------------ | --------------------------------------- |
455| Promise<[Calendar](#calendar)> | Promise used to return the obtained **Calendar** object.|
456
457**Error codes**
458
459For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
460
461| ID| Error Message                       |
462| -------- | ------------------------------ |
463| 201      | Permission denied.  |
464| 401      | Parameter error. Possible causes: Incorrect parameter types.  |
465| 801      | Capability not supported.  |
466
467**Example**
468
469```typescript
470import { BusinessError } from '@kit.BasicServicesKit';
471import { calendarMgr } from '../entryability/EntryAbility';
472
473let calendar : calendarManager.Calendar | undefined = undefined;
474calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => {
475  console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
476  calendar = data;
477}).catch((err: BusinessError) => {
478  console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
479});
480```
481
482### getAllCalendars
483
484getAllCalendars(callback: AsyncCallback\<Calendar[]>): void
485
486Obtains the created and default **Calendar** objects of the current application. This API uses an asynchronous callback to return the result.
487
488**Required permissions**: ohos.permission.READ_CALENDAR
489
490**System capability**: SystemCapability.Applications.CalendarData
491
492**Parameters**
493
494| Name  | Type                                  | Mandatory| Description                                     |
495| -------- | -------------------------------------- | ---- | ----------------------------------------- |
496| callback | AsyncCallback<[Calendar](#calendar)[]> | Yes  | Callback used to return an array of the obtained **Calendar** objects.|
497
498**Error codes**
499
500For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
501
502| ID| Error Message                       |
503| -------- | ------------------------------ |
504| 201      | Permission denied.  |
505| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
506| 801      | Capability not supported.  |
507
508**Example**
509
510```typescript
511import { BusinessError } from '@kit.BasicServicesKit';
512import { calendarMgr } from '../entryability/EntryAbility';
513
514calendarMgr?.getAllCalendars((err: BusinessError, data: calendarManager.Calendar[]) => {
515  if (err) {
516    console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`);
517  } else {
518    console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`);
519    data.forEach((calendar) => {
520      const account = calendar.getAccount();
521      console.info(`account -> ${JSON.stringify(account)}`);
522    })
523  }
524});
525```
526
527### getAllCalendars
528
529getAllCalendars(): Promise\<Calendar[]>
530
531Obtains the created and default **Calendar** objects of the current application. This API uses a promise to return the result.
532
533**Required permissions**: ohos.permission.READ_CALENDAR
534
535**System capability**: SystemCapability.Applications.CalendarData
536
537**Return value**
538
539| Type                            | Description                                       |
540| -------------------------------- | ------------------------------------------- |
541| Promise<[Calendar](#calendar)[]> | Promise used to return an array of obtained **Calendar** objects.|
542
543**Error codes**
544
545For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
546
547| ID| Error Message                       |
548| -------- | ------------------------------ |
549| 201      | Permission denied.  |
550| 401      | Parameter error. Possible causes: Incorrect parameter types.  |
551| 801      | Capability not supported.  |
552
553**Example**
554
555```typescript
556import { BusinessError } from '@kit.BasicServicesKit';
557import { calendarMgr } from '../entryability/EntryAbility';
558
559calendarMgr?.getAllCalendars().then((data: calendarManager.Calendar[]) => {
560  console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`);
561  data.forEach((calendar) => {
562    const account = calendar.getAccount();
563    console.info(`account -> ${JSON.stringify(account)}`);
564  })
565}).catch((err: BusinessError) => {
566  console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`);
567});
568```
569
570### editEvent<sup>12+</sup>
571
572editEvent(event: Event): Promise\<number>
573
574Creates 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.
575
576**Atomic service API**: This API can be used in atomic services since API version 12.
577
578**System capability**: SystemCapability.Applications.CalendarData
579
580**Parameters**
581
582| Name| Type           | Mandatory| Description       |
583| ------ | --------------- | ---- | ----------- |
584| event  | [Event](#event) | Yes  | **Event** object.|
585
586**Return value**
587
588| Type          | Description                                                                         |
589| -------------- |-----------------------------------------------------------------------------|
590| Promise&lt;number&gt; | Promise used to return the event ID. The event ID is the unique identifier of the 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.|
591
592**Example**
593
594```typescript
595import { BusinessError } from '@kit.BasicServicesKit';
596import { calendarMgr } from '../entryability/EntryAbility';
597
598const date = new Date();
599const event: calendarManager.Event = {
600  title: 'title',
601  type: calendarManager.EventType.NORMAL,
602  startTime: date.getTime(),
603  endTime: date.getTime() + 60 * 60 * 1000
604};
605calendarMgr?.editEvent(event).then((eventId: number): void => {
606  console.info(`create Event id = ${eventId}`);
607}).catch((err: BusinessError) => {
608  console.error(`Failed to create Event. Code: ${err.code}, message: ${err.message}`);
609});
610```
611
612## Calendar
613
614In the following API examples, you need to use [createCalendar()](#createcalendar) or [getCalendar()](#getcalendar) to obtain a **Calendar** object before calling related APIs.
615
616### Attributes
617
618**Atomic service API**: This API can be used in atomic services since API version 11.
619
620**System capability**: SystemCapability.Applications.CalendarData
621
622| Name| Type  | Read Only| Optional| Description                                                                      |
623| ---- | ------ | ---- |----|--------------------------------------------------------------------------|
624| id   | number | Yes  | No | Calendar 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.|
625
626### addEvent
627
628addEvent(event: Event, callback: AsyncCallback\<number>): void
629
630Creates an event, with no event ID specified in **Event**. This API uses an asynchronous callback to return the result.
631
632**Atomic service API**: This API can be used in atomic services since API version 11.
633
634**System capability**: SystemCapability.Applications.CalendarData
635
636**Parameters**
637
638| Name  | Type                  | Mandatory| Description                                                                   |
639| -------- | ---------------------- | ---- |-----------------------------------------------------------------------|
640| event    | [Event](#event)        | Yes  | **Event** object.                                                             |
641| callback | AsyncCallback\<number> | Yes  | Callback used to return the event ID. The event ID is the unique identifier of the 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.|
642
643**Example**
644
645```typescript
646import { BusinessError } from '@kit.BasicServicesKit';
647import { calendarMgr } from '../entryability/EntryAbility';
648
649let calendar : calendarManager.Calendar | undefined = undefined;
650const date = new Date();
651const event: calendarManager.Event = {
652  type: calendarManager.EventType.NORMAL,
653  startTime: date.getTime(),
654  endTime: date.getTime() + 60 * 60 * 1000
655};
656calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => {
657  console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
658  calendar = data;
659  calendar.addEvent(event, (err: BusinessError, data: number): void => {
660    if (err) {
661      console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`);
662    } else {
663      console.info(`Succeeded in adding event, id -> ${data}`);
664    }
665  });
666}).catch((err: BusinessError) => {
667  console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
668});
669```
670
671### addEvent
672
673addEvent(event: Event): Promise\<number>
674
675Creates an event, with no event ID specified in **Event**. This API uses a promise to return the result.
676
677**Atomic service API**: This API can be used in atomic services since API version 11.
678
679**System capability**: SystemCapability.Applications.CalendarData
680
681**Parameters**
682
683| Name| Type           | Mandatory| Description       |
684| ------ | --------------- | ---- | ----------- |
685| event  | [Event](#event) | Yes  | **Event** object.|
686
687**Return value**
688
689| Type            | Description                       |
690| ---------------- | --------------------------- |
691| Promise\<number> | Promise used to return the event ID.|
692
693**Example**
694
695```typescript
696import { BusinessError } from '@kit.BasicServicesKit';
697import { calendarMgr } from '../entryability/EntryAbility';
698
699let calendar : calendarManager.Calendar | undefined = undefined;
700const date = new Date();
701const event: calendarManager.Event = {
702  type: calendarManager.EventType.NORMAL,
703  startTime: date.getTime(),
704  endTime: date.getTime() + 60 * 60 * 1000
705};
706calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
707  if (err) {
708    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
709  } else {
710    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
711    calendar = data;
712    calendar.addEvent(event).then((data: number) => {
713      console.info(`Succeeded in adding event, id -> ${data}`);
714    }).catch((err: BusinessError) => {
715      console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`);
716    });
717  }
718});
719```
720
721### addEvents
722
723addEvents(events: Event[], callback: AsyncCallback\<void>): void
724
725Creates events in batches, with no event ID specified in **Event**. This API uses an asynchronous callback to return the result.
726
727**System capability**: SystemCapability.Applications.CalendarData
728
729**Parameters**
730
731| Name  | Type                | Mandatory| Description           |
732| -------- | -------------------- | ---- | --------------- |
733| events   | [Event](#event)[]    | Yes  | Array of **Event** objects.|
734| callback | AsyncCallback\<void> | Yes  | Callback used to return the result.     |
735
736**Example**
737
738```typescript
739import { BusinessError } from '@kit.BasicServicesKit';
740import { calendarMgr } from '../entryability/EntryAbility';
741
742let calendar : calendarManager.Calendar | undefined = undefined;
743const date = new Date();
744const events: calendarManager.Event[] = [
745  {
746    type: calendarManager.EventType.NORMAL,
747    startTime: date.getTime(),
748    endTime: date.getTime() + 60 * 60 * 1000
749  },
750  {
751    type: calendarManager.EventType.NORMAL,
752    startTime: date.getTime(),
753    endTime: date.getTime() + 60 * 60 * 1000
754  }
755];
756calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
757  if (err) {
758    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
759  } else {
760    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
761    calendar = data;
762    calendar.addEvents(events, (err: BusinessError) => {
763      if (err) {
764        console.error(`Failed to add events. Code: ${err.code}, message: ${err.message}`);
765      } else {
766        console.info("Succeeded in adding events");
767      }
768    });
769  }
770});
771```
772
773### addEvents
774
775addEvents(events: Event[]): Promise\<void>
776
777Creates events in batches, with no event ID specified in **Event**. This API uses a promise to return the result.
778
779**System capability**: SystemCapability.Applications.CalendarData
780
781**Parameters**
782
783| Name| Type             | Mandatory| Description           |
784| ------ | ----------------- | ---- | --------------- |
785| events | [Event](#event)[] | Yes  | Array of **Event** objects.|
786
787**Return value**
788
789| Type          | Description                     |
790| -------------- | ------------------------- |
791| Promise\<void> | Promise that returns no value.|
792
793**Example**
794
795```typescript
796import { BusinessError } from '@kit.BasicServicesKit';
797import { calendarMgr } from '../entryability/EntryAbility';
798
799let calendar : calendarManager.Calendar | undefined = undefined;
800const date = new Date();
801const events: calendarManager.Event[] = [
802  {
803    type: calendarManager.EventType.NORMAL,
804    startTime: date.getTime(),
805    endTime: date.getTime() + 60 * 60 * 1000
806  },
807  {
808    type: calendarManager.EventType.NORMAL,
809    startTime: date.getTime(),
810    endTime: date.getTime() + 60 * 60 * 1000
811  }
812];
813calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
814  if (err) {
815    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
816  } else {
817    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
818    calendar = data;
819    calendar.addEvents(events).then(() => {
820      console.info("Succeeded in adding events");
821    }).catch((err: BusinessError) => {
822      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
823    });
824  }
825});
826```
827
828### deleteEvent
829
830deleteEvent(id: number, callback: AsyncCallback\<void>): void
831
832Deletes an event with the specified ID. This API uses an asynchronous callback to return the result.
833
834**System capability**: SystemCapability.Applications.CalendarData
835
836**Parameters**
837
838| Name  | Type                | Mandatory| Description                                    |
839| -------- | -------------------- | ---- |----------------------------------------|
840| id       | number               | Yes  | Event ID, which is the unique identifier of an event. If the input event ID is a positive integer, the event is created.|
841| callback | AsyncCallback\<void> | Yes  | Callback used to return the result.                                 |
842
843**Example**
844
845```typescript
846import { BusinessError } from '@kit.BasicServicesKit';
847import { calendarMgr } from '../entryability/EntryAbility';
848
849let calendar : calendarManager.Calendar | undefined = undefined;
850let id: number = 0;
851const date = new Date();
852const event: calendarManager.Event = {
853  type: calendarManager.EventType.NORMAL,
854  startTime: date.getTime(),
855  endTime: date.getTime() + 60 * 60 * 1000
856};
857calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
858  if (err) {
859    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
860  } else {
861    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
862    calendar = data;
863    calendar.addEvent(event).then((data: number) => {
864      console.info(`Succeeded in adding event, id -> ${data}`);
865      id = data;
866      calendar?.deleteEvent(id, (err: BusinessError) => {
867        if (err) {
868          console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`);
869        } else {
870          console.info(`Succeeded in deleting event, err -> ${JSON.stringify(err)}`);
871        }
872      });
873    }).catch((err: BusinessError) => {
874      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
875    });
876  }
877});
878```
879
880### deleteEvent
881
882deleteEvent(id: number): Promise\<void>
883
884Deletes an event with the specified ID. This API uses a promise to return the result.
885
886**System capability**: SystemCapability.Applications.CalendarData
887
888**Parameters**
889
890| Name| Type  | Mandatory| Description    |
891| ------ | ------ | ---- | -------- |
892| id     | number | Yes  | Event ID.|
893
894**Return value**
895
896| Type          | Description                     |
897| -------------- | ------------------------- |
898| Promise\<void> | Promise that returns no value.|
899
900**Example**
901
902```typescript
903import { BusinessError } from '@kit.BasicServicesKit';
904import { calendarMgr } from '../entryability/EntryAbility';
905
906let calendar : calendarManager.Calendar | undefined = undefined;
907let id: number = 0;
908const date = new Date();
909const event: calendarManager.Event = {
910  type: calendarManager.EventType.NORMAL,
911  startTime: date.getTime(),
912  endTime: date.getTime() + 60 * 60 * 1000
913};
914calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
915  if (err) {
916    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
917  } else {
918    console.info(`Succeeded in getting calendar data->${JSON.stringify(data)}`);
919    calendar = data;
920    await calendar.addEvent(event).then((data: number) => {
921      console.info(`Succeeded in adding event, id -> ${data}`);
922      id = data;
923    }).catch((err: BusinessError) => {
924      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
925    });
926    calendar.deleteEvent(id).then(() => {
927      console.info("Succeeded in deleting event");
928    }).catch((err: BusinessError) => {
929      console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`);
930    });
931  }
932});
933```
934
935### deleteEvents
936
937deleteEvents(ids: number[], callback: AsyncCallback\<void>): void
938
939Deletes a batch of events with the specified IDs. This API uses an asynchronous callback to return the result.
940
941**System capability**: SystemCapability.Applications.CalendarData
942
943**Parameters**
944
945| Name  | Type                | Mandatory| Description        |
946| -------- | -------------------- | ---- | ------------ |
947| ids      | number[]             | Yes  | Array of event IDs.|
948| callback | AsyncCallback\<void> | Yes  | Callback used to return the result.  |
949
950**Example**
951
952```typescript
953import { BusinessError } from '@kit.BasicServicesKit';
954import { calendarMgr } from '../entryability/EntryAbility';
955
956let calendar : calendarManager.Calendar | undefined = undefined;
957let id1: number = 0;
958let id2: number = 0;
959const date = new Date();
960const event1: calendarManager.Event = {
961  type: calendarManager.EventType.NORMAL,
962  startTime: date.getTime(),
963  endTime: date.getTime() + 60 * 60 * 1000
964};
965const event2: calendarManager.Event = {
966  type: calendarManager.EventType.IMPORTANT,
967  startTime: date.getTime(),
968  endTime: date.getTime() + 60 * 60 * 1000
969};
970calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
971  if (err) {
972    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
973  } else {
974    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
975    calendar = data;
976    await calendar.addEvent(event1).then((data: number) => {
977      console.info(`Succeeded in adding event, id -> ${data}`);
978      id1 = data;
979    }).catch((err: BusinessError) => {
980      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
981    });
982    await calendar.addEvent(event2).then((data: number) => {
983      console.info(`Succeeded in adding event, id -> ${data}`);
984      id2 = data;
985    }).catch((err: BusinessError) => {
986      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
987    });
988    calendar.deleteEvents([id1, id2], (err: BusinessError) => {
989      if (err) {
990        console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`);
991      } else {
992        console.info("Succeeded in deleting events");
993      }
994    });
995  }
996});
997```
998
999### deleteEvents
1000
1001deleteEvents(ids: number[]): Promise\<void>
1002
1003Deletes a batch of events with the specified IDs. This API uses a promise to return the result.
1004
1005**System capability**: SystemCapability.Applications.CalendarData
1006
1007**Parameters**
1008
1009| Name| Type    | Mandatory| Description        |
1010| ------ | -------- | ---- | ------------ |
1011| ids    | number[] | Yes  | Array of event IDs.|
1012
1013**Return value**
1014
1015| Type          | Description                     |
1016| -------------- | ------------------------- |
1017| Promise\<void> | Promise that returns no value.|
1018
1019**Example**
1020
1021```typescript
1022import { BusinessError } from '@kit.BasicServicesKit';
1023import { calendarMgr } from '../entryability/EntryAbility';
1024
1025let calendar : calendarManager.Calendar | undefined = undefined;
1026let id1: number = 0;
1027let id2: number = 0;
1028const date = new Date();
1029const event1: calendarManager.Event = {
1030  type: calendarManager.EventType.NORMAL,
1031  startTime: date.getTime(),
1032  endTime: date.getTime() + 60 * 60 * 1000
1033};
1034const event2: calendarManager.Event = {
1035  type: calendarManager.EventType.IMPORTANT,
1036  startTime: date.getTime(),
1037  endTime: date.getTime() + 60 * 60 * 1000
1038};
1039calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1040  if (err) {
1041    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1042  } else {
1043    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1044    calendar = data;
1045    await calendar.addEvent(event1).then((data: number) => {
1046      console.info(`Succeeded in adding event, id -> ${data}`);
1047      id1 = data;
1048    }).catch((err: BusinessError) => {
1049      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1050    });
1051    await calendar.addEvent(event2).then((data: number) => {
1052      console.info(`Succeeded in adding event, id -> ${data}`);
1053      id2 = data;
1054    }).catch((err: BusinessError) => {
1055      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1056    });
1057    calendar.deleteEvents([id1, id2]).then(() => {
1058      console.info("Succeeded in deleting events");
1059    }).catch((err: BusinessError) => {
1060      console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`);
1061    });
1062  }
1063});
1064```
1065
1066### updateEvent
1067
1068updateEvent(event: Event, callback: AsyncCallback\<void>): void
1069
1070Updates an event. This API uses an asynchronous callback to return the result.
1071
1072**System capability**: SystemCapability.Applications.CalendarData
1073
1074**Parameters**
1075
1076| Name  | Type                | Mandatory| Description       |
1077| -------- | -------------------- | ---- | ----------- |
1078| event    | [Event](#event)      | Yes  | **Event** object.|
1079| callback | AsyncCallback\<void> | Yes  | Callback used to return the result. |
1080
1081**Example**
1082
1083```typescript
1084import { BusinessError } from '@kit.BasicServicesKit';
1085import { calendarMgr } from '../entryability/EntryAbility';
1086
1087let calendar : calendarManager.Calendar | undefined = undefined;
1088const date = new Date();
1089const oriEvent: calendarManager.Event = {
1090  title: 'update',
1091  type: calendarManager.EventType.NORMAL,
1092  description: 'updateEventTest',
1093  startTime: date.getTime(),
1094  endTime: date.getTime() + 60 * 60 * 1000
1095};
1096calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1097  if (err) {
1098    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1099  } else {
1100    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1101    calendar = data;
1102    await calendar.addEvent(oriEvent).then((data: number) => {
1103      console.info(`Succeeded in adding event, id -> ${data}`);
1104      oriEvent.id = data;
1105      oriEvent.title = 'newUpdate';
1106    }).catch((err: BusinessError) => {
1107      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1108    });
1109    calendar.updateEvent(oriEvent, (err: BusinessError) => {
1110      if (err) {
1111        console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`);
1112      } else {
1113        console.info("Succeeded in updating event");
1114      }
1115    });
1116  }
1117});
1118```
1119
1120### updateEvent
1121
1122updateEvent(event: Event): Promise\<void>
1123
1124Updates an event. This API uses a promise to return the result.
1125
1126**System capability**: SystemCapability.Applications.CalendarData
1127
1128**Parameters**
1129
1130| Name| Type           | Mandatory| Description       |
1131| ------ | --------------- | ---- | ----------- |
1132| event  | [Event](#event) | Yes  | **Event** object.|
1133
1134**Return value**
1135
1136| Type          | Description                     |
1137| -------------- | ------------------------- |
1138| Promise\<void> | Promise that returns no value.|
1139
1140**Example**
1141
1142```typescript
1143import { BusinessError } from '@kit.BasicServicesKit';
1144import { calendarMgr } from '../entryability/EntryAbility';
1145
1146let calendar : calendarManager.Calendar | undefined = undefined;
1147const date = new Date();
1148const oriEvent: calendarManager.Event = {
1149  title: 'update',
1150  type: calendarManager.EventType.NORMAL,
1151  description: 'updateEventTest',
1152  startTime: date.getTime(),
1153  endTime: date.getTime() + 60 * 60 * 1000
1154};
1155calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1156  if (err) {
1157    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1158  } else {
1159    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1160    calendar = data;
1161    await calendar.addEvent(oriEvent).then((data: number) => {
1162      console.info(`Succeeded in adding event, id -> ${data}`);
1163      oriEvent.id = data;
1164      oriEvent.title = 'newUpdate';
1165    }).catch((err: BusinessError) => {
1166      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1167    });
1168    calendar.updateEvent(oriEvent).then(() => {
1169      console.info(`Succeeded in updating event`);
1170    }).catch((err: BusinessError) => {
1171      console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`);
1172    });
1173  }
1174});
1175```
1176
1177### getEvents
1178
1179getEvents(callback: AsyncCallback\<Event[]>): void
1180
1181Obtains all events in the current calendar. This API uses an asynchronous callback to return the result.
1182
1183**System capability**: SystemCapability.Applications.CalendarData
1184
1185**Parameters**
1186
1187| Name  | Type                            | Mandatory| Description                             |
1188| -------- | -------------------------------- | ---- | --------------------------------- |
1189| callback | AsyncCallback<[Event](#event)[]> | Yes  | Callback used to return an array of events.|
1190
1191**Example**
1192
1193```typescript
1194import { BusinessError } from '@kit.BasicServicesKit';
1195import { calendarMgr } from '../entryability/EntryAbility';
1196
1197let calendar : calendarManager.Calendar | undefined = undefined;
1198calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1199  if (err) {
1200    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1201  } else {
1202    console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`);
1203    calendar = data;
1204    calendar.getEvents((err: BusinessError, data: calendarManager.Event[]) => {
1205      if (err) {
1206        console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1207      } else {
1208        console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1209      }
1210    });
1211  }
1212});
1213```
1214
1215### getEvents
1216
1217getEvents(eventFilter: EventFilter, eventKey: (keyof Event)[], callback: AsyncCallback\<Event[]>):void
1218
1219Obtains all events in a calendar that match the filter criteria. This API uses an asynchronous callback to return the result.
1220
1221**System capability**: SystemCapability.Applications.CalendarData
1222
1223**Parameters**
1224
1225| Name     | Type                            | Mandatory| Description                             |
1226| ----------- | -------------------------------- | ---- | --------------------------------- |
1227| eventFilter | [EventFilter](#eventfilter)      | Yes  | Filter criteria.                       |
1228| eventKey    | (keyof [Event](#event))[]        | Yes  | Filter field.                       |
1229| callback    | AsyncCallback<[Event](#event)[]> | Yes  | Callback used to return an array of events.|
1230
1231**Example**
1232
1233```typescript
1234import { BusinessError } from '@kit.BasicServicesKit';
1235import { calendarMgr } from '../entryability/EntryAbility';
1236
1237let calendar : calendarManager.Calendar | undefined = undefined;
1238let id1: number = 0;
1239let id2: number = 0;
1240const date = new Date();
1241const event1: calendarManager.Event = {
1242  type: calendarManager.EventType.NORMAL,
1243  startTime: date.getTime(),
1244  endTime: date.getTime() + 60 * 60 * 1000
1245};
1246const event2: calendarManager.Event = {
1247  type: calendarManager.EventType.IMPORTANT,
1248  startTime: date.getTime(),
1249  endTime: date.getTime() + 60 * 60 * 1000
1250};
1251calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1252  if (err) {
1253    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1254  } else {
1255    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1256    calendar = data;
1257    await calendar.addEvent(event1).then((data: number) => {
1258      console.info(`Succeeded in adding event, id -> ${data}`);
1259    }).catch((err: BusinessError) => {
1260      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1261    });
1262    await calendar.addEvent(event2).then((data: number) => {
1263      console.info(`Succeeded in adding event, id -> ${data}`);
1264    }).catch((err: BusinessError) => {
1265      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1266    });
1267    const filter = calendarManager.EventFilter.filterById([id1, id2]);
1268    calendar.getEvents(filter, ['title', 'type', 'startTime', 'endTime'], (err: BusinessError, data: calendarManager.Event[]) => {
1269      if (err) {
1270        console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1271      } else {
1272        console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1273      }
1274    });
1275  }
1276});
1277```
1278
1279### getEvents
1280
1281getEvents(eventFilter?: EventFilter, eventKey?: (keyof Event)[]): Promise\<Event[]>
1282
1283Obtains all events in a calendar that match the filter criteria. This API uses a promise to return the result.
1284
1285**System capability**: SystemCapability.Applications.CalendarData
1286
1287**Parameters**
1288
1289| Name     | Type                       | Mandatory| Description      |
1290| ----------- | --------------------------- | ---- | ---------- |
1291| eventFilter | [EventFilter](#eventfilter) | No  | Filter criteria.|
1292| eventKey    | (keyof [Event](#event))[]   | No  | Filter field.|
1293
1294**Return value**
1295
1296| Type                      | Description                               |
1297| -------------------------- | ----------------------------------- |
1298| Promise<[Event](#event)[]> | Promise used to return the result, which is an array of **Event** objects.|
1299
1300**Example**
1301
1302```typescript
1303import { BusinessError } from '@kit.BasicServicesKit';
1304import { calendarMgr } from '../entryability/EntryAbility';
1305
1306let calendar : calendarManager.Calendar | undefined = undefined;
1307const date = new Date();
1308const event: calendarManager.Event = {
1309  title: 'MyEvent',
1310  type: calendarManager.EventType.IMPORTANT,
1311  startTime: date.getTime(),
1312  endTime: date.getTime() + 60 * 60 * 1000
1313};
1314calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1315  if (err) {
1316    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1317  } else {
1318    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1319    calendar = data;
1320    await calendar.addEvent(event).then((data: number) => {
1321      console.info(`Succeeded in adding event, id -> ${data}`);
1322    }).catch((err: BusinessError) => {
1323      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1324    });
1325    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
1326    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1327      console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1328    }).catch((err: BusinessError) => {
1329      console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1330    });
1331  }
1332});
1333```
1334
1335### getConfig
1336
1337getConfig(): CalendarConfig
1338
1339Obtains the calendar configuration information.
1340
1341**System capability**: SystemCapability.Applications.CalendarData
1342
1343**Return value**
1344
1345| Type                             | Description          |
1346| --------------------------------- | -------------- |
1347| [CalendarConfig](#calendarconfig) | Calendar configuration information.|
1348
1349**Example**
1350
1351```typescript
1352import { calendarMgr } from '../entryability/EntryAbility';
1353import { BusinessError } from '@kit.BasicServicesKit';
1354
1355let calendar : calendarManager.Calendar | undefined = undefined;
1356calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1357  if (err) {
1358    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1359  } else {
1360    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1361    calendar = data;
1362    const config = calendar.getConfig();
1363    console.info("Succeeded in getting config");
1364  }
1365});
1366```
1367
1368### setConfig
1369
1370setConfig(config: CalendarConfig, callback: AsyncCallback\<void>): void
1371
1372Sets the calendar configuration information. This API uses an asynchronous callback to return the result.
1373
1374**System capability**: SystemCapability.Applications.CalendarData
1375
1376**Parameters**
1377
1378| Name  | Type                             | Mandatory| Description          |
1379| -------- | --------------------------------- | ---- | -------------- |
1380| config   | [CalendarConfig](#calendarconfig) | Yes  | Calendar configuration information.|
1381| callback | AsyncCallback\<void>              | Yes  | Callback used to return the result.    |
1382
1383**Example**
1384
1385```typescript
1386import { BusinessError } from '@kit.BasicServicesKit';
1387import { calendarMgr } from '../entryability/EntryAbility';
1388
1389let calendar : calendarManager.Calendar | undefined = undefined;
1390const config: calendarManager.CalendarConfig = {
1391  enableReminder: true,
1392  color: '#aabbcc'
1393};
1394calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1395  if (err) {
1396    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1397  } else {
1398    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1399    calendar = data;
1400    calendar.setConfig(config, (err: BusinessError) => {
1401      if (err) {
1402        console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
1403      } else {
1404        console.info(`Succeeded in setting config, config -> ${JSON.stringify(config)}`);
1405      }
1406    });
1407  }
1408});
1409```
1410
1411### setConfig
1412
1413setConfig(config: CalendarConfig): Promise\<void>
1414
1415Sets the calendar configuration information. This API uses a promise to return the result.
1416
1417**System capability**: SystemCapability.Applications.CalendarData
1418
1419**Parameters**
1420
1421| Name| Type                             | Mandatory| Description          |
1422| ------ | --------------------------------- | ---- | -------------- |
1423| config | [CalendarConfig](#calendarconfig) | Yes  | Calendar configuration information.|
1424
1425**Return value**
1426
1427| Type          | Description                     |
1428| -------------- | ------------------------- |
1429| Promise\<void> | Promise that returns no value.|
1430
1431**Example**
1432
1433```typescript
1434import { BusinessError } from '@kit.BasicServicesKit';
1435import { calendarMgr } from '../entryability/EntryAbility';
1436
1437let calendar : calendarManager.Calendar | undefined = undefined;
1438const config: calendarManager.CalendarConfig = {
1439  enableReminder: true,
1440  color: '#aabbcc'
1441};
1442calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1443  if (err) {
1444    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1445  } else {
1446    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1447    calendar = data;
1448    calendar.setConfig(config).then(() => {
1449      console.info(`Succeeded in setting config, data->${JSON.stringify(config)}`);
1450    }).catch((err: BusinessError) => {
1451      console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
1452    });
1453  }
1454});
1455```
1456
1457### getAccount
1458
1459getAccount(): CalendarAccount
1460
1461Obtains the calendar account information.
1462
1463**System capability**: SystemCapability.Applications.CalendarData
1464
1465**Return value**
1466
1467| Type                               | Description          |
1468| ----------------------------------- | -------------- |
1469| [CalendarAccount](#calendaraccount) | Calendar account information.|
1470
1471**Example**
1472
1473```typescript
1474import { calendarMgr } from '../entryability/EntryAbility';
1475import { BusinessError } from '@kit.BasicServicesKit';
1476
1477let calendar : calendarManager.Calendar | undefined = undefined;
1478calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1479  if (err) {
1480    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1481  } else {
1482    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1483    calendar = data;
1484    const account = calendar.getAccount();
1485    console.info(`succeeded in getting account, account -> ${JSON.stringify(account)}`);
1486  }
1487});
1488```
1489
1490## CalendarAccount
1491
1492Describes the calendar account information.
1493
1494**Atomic service API**: This API can be used in atomic services since API version 11.
1495
1496**System capability**: SystemCapability.Applications.CalendarData
1497
1498| Name       | Type                         | Read Only| Optional| Description                              |
1499| ----------- | ----------------------------- | ---- |----|----------------------------------|
1500| name        | string                        | Yes  | No | Account name (for developers).                    |
1501| type        | [CalendarType](#calendartype) | No  | No | Account type.                           |
1502| displayName | string                        | No  | Yes | Account name displayed on the calendar application (for users). If this parameter is not set, an empty string is used.|
1503
1504## CalendarConfig
1505
1506Describes the calendar configuration information.
1507
1508**System capability**: SystemCapability.Applications.CalendarData
1509
1510| Name          | Type    | Read Only   | Optional| Description                                                        |
1511| -------------- |--------|-------|----| ------------------------------------------------------------ |
1512| enableReminder | boolean | No    | Yes | Whether 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**.|
1513| color          | number \| string | No  | Yes | Calendar color. If this parameter is not set, the default value **'#0A59F7'** is used.               |
1514
1515## Event
1516
1517Describes an **Event** object, including the event title, start time, and end time.
1518
1519**System capability**: SystemCapability.Applications.CalendarData
1520
1521| Name          | Type                             | Read Only| Optional| Description                                                                                                                                                                                                     |
1522| -------------- | --------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1523| id             | number                            | No  | Yes | Event ID. This parameter does not need to be set in the [addEvent()](#addevent) or [addEvents()](#addevents) API.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                           |
1524| type           | [EventType](#eventtype)           | No  | No | Event type.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                                           |
1525| title          | string                            | No  | Yes | Event title. If this parameter is not set, an empty string is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                               |
1526| location       | [Location](#location)             | No  | Yes | Event location. If this parameter is not set, the default null value is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                               |
1527| startTime      | number                            | No  | No | Start time of the event. The value is a 13-digit timestamp.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                                  |
1528| endTime        | number                            | No  | No | End time of the event. The value is a 13-digit timestamp.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                                 |
1529| isAllDay       | boolean                           | No  | Yes | Whether 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**.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                          |
1530| attendee       | [Attendee](#attendee)[]           | No  | Yes | Attendee of the conference event. If this parameter is not set, the default null value is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                             |
1531| timeZone       | string                            | No  | Yes | Time zone of the event. If this parameter is not set, the current system time zone is used. You can call the [getTimeZone()](../apis-basic-services-kit/js-apis-date-time.md#systemdatetimegettimezone) API to obtain the current system time zone.<br>**Atomic service API**: This API can be used in atomic services since API version 11.|
1532| reminderTime   | number[]                          | No  | Yes | Amount 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.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                       |
1533| recurrenceRule | [RecurrenceRule](#recurrencerule) | No  | Yes | Recurrence rule of the event. If this parameter is not set, the value does not recur.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                              |
1534| description    | string                            | No  | Yes | Event description. If this parameter is not set, an empty string is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                                |
1535| service        | [EventService](#eventservice)     | No  | Yes | Event service. If this parameter is not set, no service is available.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                              |
1536| identifier<sup>12+</sup>     | string                            | No  | Yes | A unique ID of an event can be specified. If this parameter is not set, the default null value is used.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                        |
1537| isLunar<sup>12+</sup>     | boolean                            | No  | Yes | Whether 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**.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                          |
1538
1539## CalendarType
1540
1541Enumerates the account types.
1542
1543**Atomic service API**: This API can be used in atomic services since API version 11.
1544
1545**System capability**: SystemCapability.Applications.CalendarData
1546
1547| Name      | Value          | Description                |
1548| ---------- | ------------ | -------------------- |
1549| LOCAL      | 'local'      | Local account.          |
1550| EMAIL      | 'email'      | Email account.          |
1551| BIRTHDAY   | 'birthday'   | Birthday account.          |
1552| CALDAV     | 'caldav'     | CalDAV account.|
1553| SUBSCRIBED | 'subscribed' | Subscription account.          |
1554
1555## Location
1556
1557Describes the event location.
1558
1559**Atomic service API**: This API can be used in atomic services since API version 11.
1560
1561**System capability**: SystemCapability.Applications.CalendarData
1562
1563| Name     | Type  | Read Only| Optional| Description                    |
1564| --------- | ------ | ---- |----| ------------------------ |
1565| location  | string | No  | Yes | Location. The default value is an empty string.|
1566| longitude | number | No  | Yes | Longitude of the location. The default value is **0**.       |
1567| latitude  | number | No  | Yes | Latitude of the location. The default value is **0**.       |
1568
1569## EventFilter
1570
1571Implements an event filter.
1572
1573You can use [filterById()](#filterbyid), [filterByTime()](#filterbytime), or [filterByTitle()](#filterbytitle) to obtain an event filter, and then pass the filter in [getEvents()](#getevents) for filtering.
1574
1575### filterById
1576
1577static filterById(ids: number[]): EventFilter
1578
1579Defines an event ID based filter.
1580
1581**System capability**: SystemCapability.Applications.CalendarData
1582
1583**Parameters**
1584
1585| Name| Type    | Mandatory| Description        |
1586| ------ | -------- | ---- | ------------ |
1587| ids    | number[] | Yes  | Array of event IDs.|
1588
1589**Return value**
1590
1591| Type                       | Description                |
1592| --------------------------- | -------------------- |
1593| [EventFilter](#eventfilter) | **EventFilter** object.|
1594
1595**Example**
1596
1597```typescript
1598import { BusinessError } from '@kit.BasicServicesKit';
1599import { calendarMgr } from '../entryability/EntryAbility';
1600
1601let calendar : calendarManager.Calendar | undefined = undefined;
1602let id1: number = 0;
1603let id2: number = 0;
1604const date = new Date();
1605const event1: calendarManager.Event = {
1606  type: calendarManager.EventType.NORMAL,
1607  startTime: date.getTime(),
1608  endTime: date.getTime() + 60 * 60 * 1000
1609};
1610const event2: calendarManager.Event = {
1611  type: calendarManager.EventType.IMPORTANT,
1612  startTime: date.getTime(),
1613  endTime: date.getTime() + 60 * 60 * 1000
1614};
1615calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1616  if (err) {
1617    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1618  } else {
1619    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1620    calendar = data;
1621    await calendar.addEvent(event1).then((data: number) => {
1622      console.info(`Succeeded in adding event, id -> ${data}`);
1623      id1 = data;
1624    }).catch((err: BusinessError) => {
1625      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1626    });
1627    await calendar.addEvent(event2).then((data: number) => {
1628      console.info(`Succeeded in adding event, id -> ${data}`);
1629      id2 = data;
1630    }).catch((err: BusinessError) => {
1631      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1632    });
1633    const filter = calendarManager.EventFilter.filterById([id1, id2]);
1634    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1635      console.info(`Succeeded in getting events filter by id, data -> ${JSON.stringify(data)}`);
1636    }).catch((err: BusinessError) => {
1637      console.error(`Failed to filter by id. Code: ${err.code}, message: ${err.message}`);
1638    });
1639  }
1640});
1641```
1642
1643### filterByTime
1644
1645static filterByTime(start: number, end: number): EventFilter
1646
1647Defines an event time based filter.
1648
1649**System capability**: SystemCapability.Applications.CalendarData
1650
1651**Parameters**
1652
1653| Name| Type  | Mandatory| Description      |
1654| ------ | ------ | ---- | ---------- |
1655| start  | number | Yes  | Start time.|
1656| end    | number | Yes  | End time.|
1657
1658**Return value**
1659
1660| Type                       | Description                |
1661| --------------------------- | -------------------- |
1662| [EventFilter](#eventfilter) | **EventFilter** object.|
1663
1664**Example**
1665
1666```typescript
1667import { BusinessError } from '@kit.BasicServicesKit';
1668import { calendarMgr } from '../entryability/EntryAbility';
1669
1670let calendar : calendarManager.Calendar | undefined = undefined;
1671const event1: calendarManager.Event = {
1672  type: calendarManager.EventType.NORMAL,
1673  startTime: 1686931200000,
1674  endTime: 1687017600000
1675};
1676const event2: calendarManager.Event = {
1677  type: calendarManager.EventType.IMPORTANT,
1678  startTime: 1686931200000,
1679  endTime: 1687017600000
1680};
1681calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1682  if (err) {
1683    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1684  } else {
1685    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1686    calendar = data;
1687    await calendar.addEvent(event1).then((data: number) => {
1688      console.info(`Succeeded in adding event, id -> ${data}`);
1689    }).catch((err: BusinessError) => {
1690      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1691    });
1692    await calendar.addEvent(event2).then((data: number) => {
1693      console.info(`Succeeded in adding event, id -> ${data}`);
1694    }).catch((err: BusinessError) => {
1695      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1696    });
1697    const filter = calendarManager.EventFilter.filterByTime(1686931200000, 1687017600000);
1698    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1699      console.info(`Succeeded in getting events filter by time, data -> ${JSON.stringify(data)}`);
1700    }).catch((err: BusinessError) => {
1701      console.error(`Failed to filter by time. Code: ${err.code}, message: ${err.message}`);
1702    });
1703  }
1704});
1705```
1706
1707### filterByTitle
1708
1709static filterByTitle(title: string): EventFilter
1710
1711Filters events by event title. This API supports fuzzy match.
1712
1713**System capability**: SystemCapability.Applications.CalendarData
1714
1715**Parameters**
1716
1717| Name| Type  | Mandatory| Description      |
1718| ------ | ------ | ---- | ---------- |
1719| title  | string | Yes  | Event title.|
1720
1721**Return value**
1722
1723| Type                       | Description                |
1724| --------------------------- | -------------------- |
1725| [EventFilter](#eventfilter) | **EventFilter** object.|
1726
1727**Example**
1728
1729```typescript
1730import { BusinessError } from '@kit.BasicServicesKit';
1731import { calendarMgr } from '../entryability/EntryAbility';
1732
1733let calendar : calendarManager.Calendar | undefined = undefined;
1734const event: calendarManager.Event = {
1735  title: 'MyEvent',
1736  type: calendarManager.EventType.NORMAL,
1737  startTime: 1686931200000,
1738  endTime: 1687017600000
1739};
1740calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1741  if (err) {
1742    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1743  } else {
1744    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1745    calendar = data;
1746    await calendar.addEvent(event).then((data: number) => {
1747      console.info(`Succeeded in adding event, id -> ${data}`);
1748    }).catch((err: BusinessError) => {
1749      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1750    });
1751    // // Perform fuzzy query based on MyEvent. If an event of the MyEvent1 type exists, the event can also be queried.
1752    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
1753    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1754      console.info(`Succeeded in getting events filter by title, data -> ${JSON.stringify(data)}`);
1755    }).catch((err: BusinessError) => {
1756      console.error(`Failed to filter by title. Code: ${err.code}, message: ${err.message}`);
1757    });
1758  }
1759});
1760```
1761
1762## EventType
1763
1764Enumerates event types.
1765
1766**Atomic service API**: This API can be used in atomic services since API version 11.
1767
1768**System capability**: SystemCapability.Applications.CalendarData
1769
1770| Name     | Value  | Description                     |
1771| --------- | ---- |-------------------------|
1772| NORMAL    | 0    | Normal event, such as conference or an alarm clock.  |
1773| IMPORTANT | 1    | Important 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.|
1774
1775## RecurrenceRule
1776
1777Describes the recurrence rule of the event.
1778
1779**System capability**: SystemCapability.Applications.CalendarData
1780
1781| Name               | Type                                       | Read Only| Optional| Description                                                                                                                                                                                                                                                                                                                             |
1782| ------------------- | ------------------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1783| recurrenceFrequency | [RecurrenceFrequency](#recurrencefrequency) | No  | No | Type of the event recurrence rule.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                                                                                                                                                                |
1784| expire              | number                                      | No  | Yes | End date of the recurrence period. If this parameter is not set, the default value **0** is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                                                                                                                                                       |
1785| count<sup>12+</sup>               | number                                      | No  | Yes | Number 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.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                    |
1786| interval<sup>12+</sup>            | number                                      | No  | Yes | Interval 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.<br>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:<br>Daily recurrence: The event repeats every two days.<br>Weekly recurrence: The event repeats every two weeks.<br>Monthly recurrence: The event repeats every two months.<br>Yearly recurrence: The event repeats every two years.<br>**Atomic service API**: This API can be used in atomic services since API version 12.|
1787| excludedDates<sup>12+</sup>       | number[]                                    | No  | Yes | Excluded 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.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                                                |
1788| daysOfWeek<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats 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.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                                        |
1789| daysOfMonth<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats 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.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                 |
1790| daysOfYear<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats 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.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                           |
1791| weeksOfMonth<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats 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.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                 |
1792| weeksOfYear<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats 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.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                               |
1793| monthsOfYear<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats 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.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                               |
1794## RecurrenceFrequency
1795
1796Enumerates the types of the event recurrence rule.
1797
1798**Atomic service API**: This API can be used in atomic services since API version 11.
1799
1800**System capability**: SystemCapability.Applications.CalendarData
1801
1802| Name   | Value  | Description      |
1803| ------- | ---- | ---------- |
1804| YEARLY  | 0    | Yearly.|
1805| MONTHLY | 1    | Monthly.|
1806| WEEKLY  | 2    | Weekly.|
1807| DAILY   | 3    | Daily.|
1808
1809## Attendee
1810
1811Describes the attendee information of the conference event.
1812
1813**System capability**: SystemCapability.Applications.CalendarData
1814
1815| Name | Type  | Read Only| Optional| Description                                                                |
1816| ----- | ------ | ---- |----|--------------------------------------------------------------------|
1817| name  | string | No  | No | Name of the attendee.<br>**Atomic service API**: This API can be used in atomic services since API version 11. |
1818| email | string | No  | No | Email address of the attendee.<br>**Atomic service API**: This API can be used in atomic services since API version 11.|
1819| role<sup>12+</sup>  | [AttendeeRole](#attendeerole12) | No  | Yes | Role of the attendee.<br>**Atomic service API**: This API can be used in atomic services since API version 12. |
1820
1821## EventService
1822
1823Describes the event service.
1824
1825**Atomic service API**: This API can be used in atomic services since API version 11.
1826
1827**System capability**: SystemCapability.Applications.CalendarData
1828
1829| Name       | Type                       | Read Only| Optional| Description                                 |
1830| ----------- | --------------------------- | ---- |----|-------------------------------------|
1831| type        | [ServiceType](#servicetype) | No  | No | Service type.                              |
1832| uri         | string                      | No  | No | Service URI, in the DeepLink format. It can be used to redirect the user to a page of another application.|
1833| description | string                      | No  | Yes | Description of the service. If this parameter is not set, an empty string is used.                |
1834
1835## ServiceType
1836
1837Enumerates the event service types.
1838
1839**Atomic service API**: This API can be used in atomic services since API version 11.
1840
1841**System capability**: SystemCapability.Applications.CalendarData
1842
1843| Name           | Value              | Description        |
1844| --------------- | ---------------- | ------------ |
1845| MEETING         | 'Meeting'        | Join a meeting.  |
1846| WATCHING        | 'Watching'       | Watch a video.  |
1847| REPAYMENT       | 'Repayment'      | Make a payment.  |
1848| LIVE            | 'Live'           | Watch live TV.  |
1849| SHOPPING        | 'Shopping'       | Go shopping.  |
1850| TRIP            | 'Trip'           | View the trip.  |
1851| CLASS           | 'Class'          | Join class.  |
1852| SPORTS_EVENTS   | 'SportsEvents'   | Watch a sports event.|
1853| SPORTS_EXERCISE | 'SportsExercise' | Start exercising.  |
1854
1855## AttendeeRole<sup>12+</sup>
1856
1857Enumerates the attendee role types in the conference event.
1858
1859**Atomic service API**: This API can be used in atomic services since API version 12.
1860
1861**System capability**: SystemCapability.Applications.CalendarData
1862
1863| Name          | Value            | Description    |
1864|--------------|---------------|--------|
1865| ORGANIZER<sup>12+</sup>    | 'organizer'   | Conference organizer.|
1866| PARTICIPANT<sup>12+</sup>  | 'participant' | Conference participant.|
1867