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. Events created using this API cannot be queried or modified by third-party applications, but only by the system calendar. 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<number> | 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 1183If there is only one input parameter, the filter criteria, corresponding to the type **EventFilter**, must be set as the parameter. 1184 1185**System capability**: SystemCapability.Applications.CalendarData 1186 1187**Parameters** 1188 1189| Name | Type | Mandatory| Description | 1190| -------- | -------------------------------- | ---- | --------------------------------- | 1191| callback | AsyncCallback<[Event](#event)[]> | Yes | Callback used to return an array of events.| 1192 1193**Example** 1194 1195```typescript 1196import { BusinessError } from '@kit.BasicServicesKit'; 1197import { calendarMgr } from '../entryability/EntryAbility'; 1198 1199let calendar : calendarManager.Calendar | undefined = undefined; 1200calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1201 if (err) { 1202 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1203 } else { 1204 console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`); 1205 calendar = data; 1206 calendar.getEvents((err: BusinessError, data: calendarManager.Event[]) => { 1207 if (err) { 1208 console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`); 1209 } else { 1210 console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`); 1211 } 1212 }); 1213 } 1214}); 1215``` 1216 1217### getEvents 1218 1219getEvents(eventFilter: EventFilter, eventKey: (keyof Event)[], callback: AsyncCallback\<Event[]>):void 1220 1221Obtains all events in a calendar that match the filter criteria. This API uses an asynchronous callback to return the result. 1222 1223**System capability**: SystemCapability.Applications.CalendarData 1224 1225**Parameters** 1226 1227| Name | Type | Mandatory| Description | 1228| ----------- | -------------------------------- | ---- | --------------------------------- | 1229| eventFilter | [EventFilter](#eventfilter) | Yes | Filter criteria. | 1230| eventKey | (keyof [Event](#event))[] | Yes | Filter field. | 1231| callback | AsyncCallback<[Event](#event)[]> | Yes | Callback used to return an array of events.| 1232 1233**Example** 1234 1235```typescript 1236import { BusinessError } from '@kit.BasicServicesKit'; 1237import { calendarMgr } from '../entryability/EntryAbility'; 1238 1239let calendar : calendarManager.Calendar | undefined = undefined; 1240let id1: number = 0; 1241let id2: number = 0; 1242const date = new Date(); 1243const event1: calendarManager.Event = { 1244 type: calendarManager.EventType.NORMAL, 1245 startTime: date.getTime(), 1246 endTime: date.getTime() + 60 * 60 * 1000 1247}; 1248const event2: calendarManager.Event = { 1249 type: calendarManager.EventType.IMPORTANT, 1250 startTime: date.getTime(), 1251 endTime: date.getTime() + 60 * 60 * 1000 1252}; 1253calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1254 if (err) { 1255 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1256 } else { 1257 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1258 calendar = data; 1259 await calendar.addEvent(event1).then((data: number) => { 1260 console.info(`Succeeded in adding event, id -> ${data}`); 1261 }).catch((err: BusinessError) => { 1262 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1263 }); 1264 await calendar.addEvent(event2).then((data: number) => { 1265 console.info(`Succeeded in adding event, id -> ${data}`); 1266 }).catch((err: BusinessError) => { 1267 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1268 }); 1269 const filter = calendarManager.EventFilter.filterById([id1, id2]); 1270 calendar.getEvents(filter, ['title', 'type', 'startTime', 'endTime'], (err: BusinessError, data: calendarManager.Event[]) => { 1271 if (err) { 1272 console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`); 1273 } else { 1274 console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`); 1275 } 1276 }); 1277 } 1278}); 1279``` 1280 1281### getEvents 1282 1283getEvents(eventFilter?: EventFilter, eventKey?: (keyof Event)[]): Promise\<Event[]> 1284 1285Obtains all events in a calendar that match the filter criteria. This API uses a promise to return the result. 1286 1287If there is only one input parameter, the filter criteria, corresponding to the type **EventFilter**, must be set as the parameter. 1288 1289**System capability**: SystemCapability.Applications.CalendarData 1290 1291**Parameters** 1292 1293| Name | Type | Mandatory| Description | 1294| ----------- | --------------------------- | ---- | ---------- | 1295| eventFilter | [EventFilter](#eventfilter) | No | Filter criteria.| 1296| eventKey | (keyof [Event](#event))[] | No | Filter field.| 1297 1298**Return value** 1299 1300| Type | Description | 1301| -------------------------- | ----------------------------------- | 1302| Promise<[Event](#event)[]> | Promise used to return the result, which is an array of **Event** objects.| 1303 1304**Example** 1305 1306```typescript 1307import { BusinessError } from '@kit.BasicServicesKit'; 1308import { calendarMgr } from '../entryability/EntryAbility'; 1309 1310let calendar : calendarManager.Calendar | undefined = undefined; 1311const date = new Date(); 1312const event: calendarManager.Event = { 1313 title: 'MyEvent', 1314 type: calendarManager.EventType.IMPORTANT, 1315 startTime: date.getTime(), 1316 endTime: date.getTime() + 60 * 60 * 1000 1317}; 1318calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1319 if (err) { 1320 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1321 } else { 1322 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1323 calendar = data; 1324 await calendar.addEvent(event).then((data: number) => { 1325 console.info(`Succeeded in adding event, id -> ${data}`); 1326 }).catch((err: BusinessError) => { 1327 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1328 }); 1329 // Perform fuzzy query based on MyEvent. If an event of the MyEvent1 type exists, the event can also be queried. 1330 const filter = calendarManager.EventFilter.filterByTitle('MyEvent'); 1331 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1332 console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`); 1333 }).catch((err: BusinessError) => { 1334 console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`); 1335 }); 1336 } 1337}); 1338``` 1339 1340### getConfig 1341 1342getConfig(): CalendarConfig 1343 1344Obtains the calendar configuration information. 1345 1346**System capability**: SystemCapability.Applications.CalendarData 1347 1348**Return value** 1349 1350| Type | Description | 1351| --------------------------------- | -------------- | 1352| [CalendarConfig](#calendarconfig) | Calendar configuration information.| 1353 1354**Example** 1355 1356```typescript 1357import { calendarMgr } from '../entryability/EntryAbility'; 1358import { BusinessError } from '@kit.BasicServicesKit'; 1359 1360let calendar : calendarManager.Calendar | undefined = undefined; 1361calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1362 if (err) { 1363 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1364 } else { 1365 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1366 calendar = data; 1367 const config = calendar.getConfig(); 1368 console.info("Succeeded in getting config"); 1369 } 1370}); 1371``` 1372 1373### setConfig 1374 1375setConfig(config: CalendarConfig, callback: AsyncCallback\<void>): void 1376 1377Sets the calendar configuration information. This API uses an asynchronous callback to return the result. 1378 1379**System capability**: SystemCapability.Applications.CalendarData 1380 1381**Parameters** 1382 1383| Name | Type | Mandatory| Description | 1384| -------- | --------------------------------- | ---- | -------------- | 1385| config | [CalendarConfig](#calendarconfig) | Yes | Calendar configuration information.| 1386| callback | AsyncCallback\<void> | Yes | Callback used to return the result. | 1387 1388**Example** 1389 1390```typescript 1391import { BusinessError } from '@kit.BasicServicesKit'; 1392import { calendarMgr } from '../entryability/EntryAbility'; 1393 1394let calendar : calendarManager.Calendar | undefined = undefined; 1395const config: calendarManager.CalendarConfig = { 1396 enableReminder: true, 1397 color: '#aabbcc' 1398}; 1399calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1400 if (err) { 1401 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1402 } else { 1403 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1404 calendar = data; 1405 calendar.setConfig(config, (err: BusinessError) => { 1406 if (err) { 1407 console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`); 1408 } else { 1409 console.info(`Succeeded in setting config, config -> ${JSON.stringify(config)}`); 1410 } 1411 }); 1412 } 1413}); 1414``` 1415 1416### setConfig 1417 1418setConfig(config: CalendarConfig): Promise\<void> 1419 1420Sets the calendar configuration information. This API uses a promise to return the result. 1421 1422**System capability**: SystemCapability.Applications.CalendarData 1423 1424**Parameters** 1425 1426| Name| Type | Mandatory| Description | 1427| ------ | --------------------------------- | ---- | -------------- | 1428| config | [CalendarConfig](#calendarconfig) | Yes | Calendar configuration information.| 1429 1430**Return value** 1431 1432| Type | Description | 1433| -------------- | ------------------------- | 1434| Promise\<void> | Promise that returns no value.| 1435 1436**Example** 1437 1438```typescript 1439import { BusinessError } from '@kit.BasicServicesKit'; 1440import { calendarMgr } from '../entryability/EntryAbility'; 1441 1442let calendar : calendarManager.Calendar | undefined = undefined; 1443const config: calendarManager.CalendarConfig = { 1444 enableReminder: true, 1445 color: '#aabbcc' 1446}; 1447calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1448 if (err) { 1449 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1450 } else { 1451 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1452 calendar = data; 1453 calendar.setConfig(config).then(() => { 1454 console.info(`Succeeded in setting config, data->${JSON.stringify(config)}`); 1455 }).catch((err: BusinessError) => { 1456 console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`); 1457 }); 1458 } 1459}); 1460``` 1461 1462### getAccount 1463 1464getAccount(): CalendarAccount 1465 1466Obtains the calendar account information. 1467 1468**System capability**: SystemCapability.Applications.CalendarData 1469 1470**Return value** 1471 1472| Type | Description | 1473| ----------------------------------- | -------------- | 1474| [CalendarAccount](#calendaraccount) | Calendar account information.| 1475 1476**Example** 1477 1478```typescript 1479import { calendarMgr } from '../entryability/EntryAbility'; 1480import { BusinessError } from '@kit.BasicServicesKit'; 1481 1482let calendar : calendarManager.Calendar | undefined = undefined; 1483calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1484 if (err) { 1485 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1486 } else { 1487 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1488 calendar = data; 1489 const account = calendar.getAccount(); 1490 console.info(`succeeded in getting account, account -> ${JSON.stringify(account)}`); 1491 } 1492}); 1493``` 1494 1495## CalendarAccount 1496 1497Describes the calendar account information. 1498 1499**Atomic service API**: This API can be used in atomic services since API version 11. 1500 1501**System capability**: SystemCapability.Applications.CalendarData 1502 1503| Name | Type | Read Only| Optional| Description | 1504| ----------- | ----------------------------- | ---- |----|----------------------------------| 1505| name | string | Yes | No | Account name (for developers). | 1506| type | [CalendarType](#calendartype) | No | No | Account type. | 1507| displayName | string | No | Yes | Account name displayed on the calendar application (for users). If this parameter is not set, an empty string is used.| 1508 1509## CalendarConfig 1510 1511Describes the calendar configuration information. 1512 1513**System capability**: SystemCapability.Applications.CalendarData 1514 1515| Name | Type | Read Only | Optional| Description | 1516| -------------- |--------|-------|----| ------------------------------------------------------------ | 1517| 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**.| 1518| color | number \| string | No | Yes | Calendar color. If this parameter is not set, the default value **'#0A59F7'** is used. | 1519 1520## Event 1521 1522Describes an **Event** object, including the event title, start time, and end time. 1523 1524**System capability**: SystemCapability.Applications.CalendarData 1525 1526| Name | Type | Read Only| Optional| Description | 1527| -------------- | --------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 1528| 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. | 1529| type | [EventType](#eventtype) | No | No | Event type.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1530| 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. | 1531| 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. | 1532| 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. | 1533| 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. | 1534| 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. | 1535| 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. | 1536| 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.| 1537| 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. | 1538| recurrenceRule | [RecurrenceRule](#recurrencerule) | No | Yes | Recurrence rule of an 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. | 1539| 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. | 1540| 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. | 1541| 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. | 1542| 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. | 1543 1544## CalendarType 1545 1546Enumerates the account types. 1547 1548**Atomic service API**: This API can be used in atomic services since API version 11. 1549 1550**System capability**: SystemCapability.Applications.CalendarData 1551 1552| Name | Value | Description | 1553| ---------- | ------------ | -------------------- | 1554| LOCAL | 'local' | Local account. | 1555| EMAIL | 'email' | Email account. | 1556| BIRTHDAY | 'birthday' | Birthday account. | 1557| CALDAV | 'caldav' | CalDAV account.| 1558| SUBSCRIBED | 'subscribed' | Subscription account. | 1559 1560## Location 1561 1562Describes the event location. 1563 1564**Atomic service API**: This API can be used in atomic services since API version 11. 1565 1566**System capability**: SystemCapability.Applications.CalendarData 1567 1568| Name | Type | Read Only| Optional| Description | 1569| --------- | ------ | ---- |----| ------------------------ | 1570| location | string | No | Yes | Location. The default value is an empty string.| 1571| longitude | number | No | Yes | Longitude of the location. The default value is **0**. | 1572| latitude | number | No | Yes | Latitude of the location. The default value is **0**. | 1573 1574## EventFilter 1575 1576Implements an event filter. 1577 1578You can use [filterById()](#filterbyid), [filterByTime()](#filterbytime), or [filterByTitle()](#filterbytitle) to obtain an event filter, and then pass the filter in [getEvents()](#getevents) for filtering. 1579 1580### filterById 1581 1582static filterById(ids: number[]): EventFilter 1583 1584Defines an event ID based filter. 1585 1586**System capability**: SystemCapability.Applications.CalendarData 1587 1588**Parameters** 1589 1590| Name| Type | Mandatory| Description | 1591| ------ | -------- | ---- | ------------ | 1592| ids | number[] | Yes | Array of event IDs.| 1593 1594**Return value** 1595 1596| Type | Description | 1597| --------------------------- | -------------------- | 1598| [EventFilter](#eventfilter) | **EventFilter** object.| 1599 1600**Example** 1601 1602```typescript 1603import { BusinessError } from '@kit.BasicServicesKit'; 1604import { calendarMgr } from '../entryability/EntryAbility'; 1605 1606let calendar : calendarManager.Calendar | undefined = undefined; 1607let id1: number = 0; 1608let id2: number = 0; 1609const date = new Date(); 1610const event1: calendarManager.Event = { 1611 type: calendarManager.EventType.NORMAL, 1612 startTime: date.getTime(), 1613 endTime: date.getTime() + 60 * 60 * 1000 1614}; 1615const event2: calendarManager.Event = { 1616 type: calendarManager.EventType.IMPORTANT, 1617 startTime: date.getTime(), 1618 endTime: date.getTime() + 60 * 60 * 1000 1619}; 1620calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1621 if (err) { 1622 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1623 } else { 1624 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1625 calendar = data; 1626 await calendar.addEvent(event1).then((data: number) => { 1627 console.info(`Succeeded in adding event, id -> ${data}`); 1628 id1 = data; 1629 }).catch((err: BusinessError) => { 1630 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1631 }); 1632 await calendar.addEvent(event2).then((data: number) => { 1633 console.info(`Succeeded in adding event, id -> ${data}`); 1634 id2 = data; 1635 }).catch((err: BusinessError) => { 1636 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1637 }); 1638 const filter = calendarManager.EventFilter.filterById([id1, id2]); 1639 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1640 console.info(`Succeeded in getting events filter by id, data -> ${JSON.stringify(data)}`); 1641 }).catch((err: BusinessError) => { 1642 console.error(`Failed to filter by id. Code: ${err.code}, message: ${err.message}`); 1643 }); 1644 } 1645}); 1646``` 1647 1648### filterByTime 1649 1650static filterByTime(start: number, end: number): EventFilter 1651 1652Defines an event time based filter. 1653 1654**System capability**: SystemCapability.Applications.CalendarData 1655 1656**Parameters** 1657 1658| Name| Type | Mandatory| Description | 1659| ------ | ------ | ---- | ---------- | 1660| start | number | Yes | Start time.| 1661| end | number | Yes | End time.| 1662 1663**Return value** 1664 1665| Type | Description | 1666| --------------------------- | -------------------- | 1667| [EventFilter](#eventfilter) | **EventFilter** object.| 1668 1669**Example** 1670 1671```typescript 1672import { BusinessError } from '@kit.BasicServicesKit'; 1673import { calendarMgr } from '../entryability/EntryAbility'; 1674 1675let calendar : calendarManager.Calendar | undefined = undefined; 1676const event1: calendarManager.Event = { 1677 type: calendarManager.EventType.NORMAL, 1678 startTime: 1686931200000, 1679 endTime: 1687017600000 1680}; 1681const event2: calendarManager.Event = { 1682 type: calendarManager.EventType.IMPORTANT, 1683 startTime: 1686931200000, 1684 endTime: 1687017600000 1685}; 1686calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1687 if (err) { 1688 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1689 } else { 1690 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1691 calendar = data; 1692 await calendar.addEvent(event1).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 await calendar.addEvent(event2).then((data: number) => { 1698 console.info(`Succeeded in adding event, id -> ${data}`); 1699 }).catch((err: BusinessError) => { 1700 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1701 }); 1702 const filter = calendarManager.EventFilter.filterByTime(1686931200000, 1687017600000); 1703 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1704 console.info(`Succeeded in getting events filter by time, data -> ${JSON.stringify(data)}`); 1705 }).catch((err: BusinessError) => { 1706 console.error(`Failed to filter by time. Code: ${err.code}, message: ${err.message}`); 1707 }); 1708 } 1709}); 1710``` 1711 1712### filterByTitle 1713 1714static filterByTitle(title: string): EventFilter 1715 1716Filters events by event title. This API supports fuzzy match. 1717 1718**System capability**: SystemCapability.Applications.CalendarData 1719 1720**Parameters** 1721 1722| Name| Type | Mandatory| Description | 1723| ------ | ------ | ---- | ---------- | 1724| title | string | Yes | Event title.| 1725 1726**Return value** 1727 1728| Type | Description | 1729| --------------------------- | -------------------- | 1730| [EventFilter](#eventfilter) | **EventFilter** object.| 1731 1732**Example** 1733 1734```typescript 1735import { BusinessError } from '@kit.BasicServicesKit'; 1736import { calendarMgr } from '../entryability/EntryAbility'; 1737 1738let calendar : calendarManager.Calendar | undefined = undefined; 1739const event: calendarManager.Event = { 1740 title: 'MyEvent', 1741 type: calendarManager.EventType.NORMAL, 1742 startTime: 1686931200000, 1743 endTime: 1687017600000 1744}; 1745calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1746 if (err) { 1747 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1748 } else { 1749 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1750 calendar = data; 1751 await calendar.addEvent(event).then((data: number) => { 1752 console.info(`Succeeded in adding event, id -> ${data}`); 1753 }).catch((err: BusinessError) => { 1754 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1755 }); 1756 const filter = calendarManager.EventFilter.filterByTitle('MyEvent'); 1757 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1758 console.info(`Succeeded in getting events filter by title, data -> ${JSON.stringify(data)}`); 1759 }).catch((err: BusinessError) => { 1760 console.error(`Failed to filter by title. Code: ${err.code}, message: ${err.message}`); 1761 }); 1762 } 1763}); 1764``` 1765 1766## EventType 1767 1768Enumerates event types. 1769 1770**Atomic service API**: This API can be used in atomic services since API version 11. 1771 1772**System capability**: SystemCapability.Applications.CalendarData 1773 1774| Name | Value | Description | 1775| --------- | ---- |-------------------------| 1776| NORMAL | 0 | Normal event, such as conference or an alarm clock. | 1777| 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.| 1778 1779## RecurrenceRule 1780 1781Describes the recurrence rule of an event. 1782 1783**System capability**: SystemCapability.Applications.CalendarData 1784 1785| Name | Type | Read Only| Optional| Description | 1786| ------------------- | ------------------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 1787| 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. | 1788| 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. | 1789| 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. | 1790| 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.| 1791| 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. | 1792| 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. | 1793| 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. | 1794| 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. | 1795| 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. | 1796| 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. | 1797| 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. | 1798## RecurrenceFrequency 1799 1800Enumerates the types of the event recurrence rule. 1801 1802**Atomic service API**: This API can be used in atomic services since API version 11. 1803 1804**System capability**: SystemCapability.Applications.CalendarData 1805 1806| Name | Value | Description | 1807| ------- | ---- | ---------- | 1808| YEARLY | 0 | Yearly.| 1809| MONTHLY | 1 | Monthly.| 1810| WEEKLY | 2 | Weekly.| 1811| DAILY | 3 | Daily.| 1812 1813## Attendee 1814 1815Describes the attendee information of a conference event. 1816 1817**System capability**: SystemCapability.Applications.CalendarData 1818 1819| Name | Type | Read Only| Optional| Description | 1820| ----- | ------ | ---- |----|--------------------------------------------------------------------| 1821| name | string | No | No | Name of the attendee.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1822| 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.| 1823| 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. | 1824 1825## EventService 1826 1827Describes the event service. 1828 1829**Atomic service API**: This API can be used in atomic services since API version 11. 1830 1831**System capability**: SystemCapability.Applications.CalendarData 1832 1833| Name | Type | Read Only| Optional| Description | 1834| ----------- | --------------------------- | ---- |----|-------------------------------------| 1835| type | [ServiceType](#servicetype) | No | No | Service type. | 1836| uri | string | No | No | Service URI, in the DeepLink format. It can be used to redirect the user to a page of another application.| 1837| description | string | No | Yes | Description of the service. If this parameter is not set, an empty string is used. | 1838 1839## ServiceType 1840 1841Enumerates the event service types. 1842 1843**Atomic service API**: This API can be used in atomic services since API version 11. 1844 1845**System capability**: SystemCapability.Applications.CalendarData 1846 1847| Name | Value | Description | 1848| --------------- | ---------------- | ------------ | 1849| MEETING | 'Meeting' | Join a meeting. | 1850| WATCHING | 'Watching' | Watch a video. | 1851| REPAYMENT | 'Repayment' | Make a payment. | 1852| LIVE | 'Live' | Watch live TV. | 1853| SHOPPING | 'Shopping' | Go shopping. | 1854| TRIP | 'Trip' | View the trip. | 1855| CLASS | 'Class' | Join class. | 1856| SPORTS_EVENTS | 'SportsEvents' | Watch a sports event.| 1857| SPORTS_EXERCISE | 'SportsExercise' | Start exercising. | 1858 1859## AttendeeRole<sup>12+</sup> 1860 1861Enumerates the attendee role types in the conference event. 1862 1863**Atomic service API**: This API can be used in atomic services since API version 12. 1864 1865**System capability**: SystemCapability.Applications.CalendarData 1866 1867| Name | Value | Description | 1868|--------------|---------------|--------| 1869| ORGANIZER<sup>12+</sup> | 'organizer' | Conference organizer.| 1870| PARTICIPANT<sup>12+</sup> | 'participant' | Conference participant.| 1871