• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.calendarManager (日程管理能力)
2
3本模块提供日历与日程管理能力,包括日历和日程的创建、删除、修改、查询等。
4
5- 日历管理器[CalendarManager](#calendarmanager)用于管理日历[Calendar](#calendar)。
6
7- 日历[Calendar](#calendar)主要包含账户信息[CalendarAccount](#calendaraccount)和配置信息[CalendarConfig](#calendarconfig)。日历Calendar与日程Event属于从属关系,需要先创建日历Calendar对象,然后再通过日历Calendar创建日程Event对象,一个Calendar可以有多个Event,一个Event只属于一个Calendar。日历管理器是对日历的管理,日程过滤器是对日程的管理。
8
9> **说明:**
10>
11> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
12
13
14## 导入模块
15
16```typescript
17import { calendarManager } from '@kit.CalendarKit'
18```
19
20## calendarManager.getCalendarManager
21
22getCalendarManager(context: Context): CalendarManager
23
24根据上下文获取CalendarManager对象,用于管理日历。
25
26**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
27
28**系统能力**: SystemCapability.Applications.CalendarData
29
30**模型约束**:此接口仅可在Stage模型下使用。
31
32**参数**:
33
34| 参数名   | 类型                        | 必填 | 说明                                                                                                             |
35| -------- | --------------------------- | ---- |----------------------------------------------------------------------------------------------------------------|
36| context  | Context                     | 是   | 应用上下文Context,Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 |
37
38**返回值**:
39
40| 类型                           | 说明                                  |
41| ------------------------------ | ------------------------------------- |
42| CalendarManager | 返回创建的CalendarManager对象。 |
43
44**示例**:
45
46```typescript
47// 获取上下文mContext
48// 获取日历管理器calendarMgr
49// 该文件为系统生成,目录: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.info(`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
109下列API示例中需先通过[getCalendarManager()](#calendarmanagergetcalendarmanager)方法获取CalendarManager对象,再通过此对象调用对应方法,进行Calendar的创建、删除、修改、查询等操作。
110
111
112### createCalendar
113
114createCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void
115
116根据日历账户信息,创建一个Calendar对象,使用callback异步回调。
117
118**需要权限**: ohos.permission.WRITE_CALENDAR
119
120**系统能力**: SystemCapability.Applications.CalendarData
121
122**参数**:
123
124| 参数名          | 类型                                  | 必填 | 说明                               |
125| --------------- | ------------------------------------- | ---- | ---------------------------------- |
126| calendarAccount | [CalendarAccount](#calendaraccount)   | 是   | 日历账户信息。                     |
127| callback        | AsyncCallback\<[Calendar](#calendar)> | 是   | 回调函数,返回创建的Calendar对象。 |
128
129**错误码:**
130
131以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
132
133| 错误码ID | 错误信息                        |
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**示例**:
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
168根据日历账户信息,创建一个Calendar对象,使用Promise异步回调。
169
170**需要权限**: ohos.permission.WRITE_CALENDAR
171
172**系统能力**: SystemCapability.Applications.CalendarData
173
174**参数**:
175
176| 参数名          | 类型                                | 必填 | 说明           |
177| --------------- | ----------------------------------- | ---- | -------------- |
178| calendarAccount | [CalendarAccount](#calendaraccount) | 是   | 日历账户信息。 |
179
180**返回值**:
181
182| 类型                           | 说明                                  |
183| ------------------------------ | ------------------------------------- |
184| Promise<[Calendar](#calendar)> | Promise对象,返回创建的Calendar对象。 |
185
186**错误码:**
187
188以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
189
190| 错误码ID | 错误信息                        |
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**示例**:
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
220删除指定Calendar对象,使用callback异步回调。
221
222**需要权限**: ohos.permission.WRITE_CALENDAR
223
224**系统能力**: SystemCapability.Applications.CalendarData
225
226**参数**:
227
228| 参数名   | 类型                  | 必填 | 说明           |
229| -------- | --------------------- | ---- | -------------- |
230| calendar | [Calendar](#calendar) | 是   | 即将删除的Calendar对象。 |
231| callback | AsyncCallback\<void>  | 是   | 无返回结果的AsyncCallback对象。     |
232
233**错误码:**
234
235以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
236
237| 错误码ID | 错误信息                        |
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**示例**:
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
278删除指定Calendar对象,使用Promise异步回调。
279
280**需要权限**: ohos.permission.WRITE_CALENDAR
281
282**系统能力**: SystemCapability.Applications.CalendarData
283
284**参数**:
285
286| 参数名   | 类型                  | 必填 | 说明           |
287| -------- | --------------------- | ---- | -------------- |
288| calendar | [Calendar](#calendar) | 是   | 即将删除的Calendar对象。 |
289
290**返回值**:
291
292| 类型           | 说明                      |
293| -------------- | ------------------------- |
294| Promise\<void> | 无返回结果的Promise对象。 |
295
296**错误码:**
297
298以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
299
300| 错误码ID | 错误信息                        |
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**示例**:
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
337获取默认Calendar对象,默认Calendar是日历存储首次运行时创建的,若创建Event时不关注其Calendar归属,则无须通过[createCalendar()](#createcalendar)创建Calendar,直接使用默认Calendar,使用callback异步回调。
338
339**需要权限**:ohos.permission.READ_CALENDAR
340
341**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
342
343**系统能力**: SystemCapability.Applications.CalendarData
344
345**参数**:
346
347| 参数名   | 类型                                 | 必填 | 说明                                 |
348| -------- | ------------------------------------ | ---- | ------------------------------------ |
349| callback | AsyncCallback<[Calendar](#calendar)> | 是   | 回调函数,返回查询到的Calendar对象。 |
350
351**错误码:**
352
353以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
354
355| 错误码ID | 错误信息                        |
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**示例**:
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
382获取指定Calendar对象,使用callback异步回调。
383
384**需要权限**: ohos.permission.READ_CALENDAR
385
386**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
387
388**系统能力**: SystemCapability.Applications.CalendarData
389
390**参数**:
391
392| 参数名          | 类型                                 | 必填 | 说明                                 |
393| --------------- | ------------------------------------ | ---- | ------------------------------------ |
394| calendarAccount | [CalendarAccount](#calendaraccount)  | 是   | 日历账户信息。                       |
395| callback        | AsyncCallback<[Calendar](#calendar)> | 是   | 回调函数,返回查询到的Calendar对象。 |
396
397**错误码:**
398
399以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
400
401| 错误码ID | 错误信息                        |
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**示例**:
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
437获取默认Calendar对象或者指定Calendar对象,使用Promise异步回调。
438
439**需要权限**: ohos.permission.READ_CALENDAR
440
441**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
442
443**系统能力**: SystemCapability.Applications.CalendarData
444
445**参数**:
446
447| 参数名          | 类型                                | 必填 | 说明                                                         |
448| --------------- | ----------------------------------- | ---- | ------------------------------------------------------------ |
449| calendarAccount | [CalendarAccount](#calendaraccount) | 否   | 日历账户信息,用来获取指定Calendar对象,不填时,表示获取默认Calendar对象。 |
450
451**返回值**:
452
453| 类型                           | 说明                                    |
454| ------------------------------ | --------------------------------------- |
455| Promise<[Calendar](#calendar)> | Promise对象,返回查询到的Calendar对象。 |
456
457**错误码:**
458
459以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
460
461| 错误码ID | 错误信息                        |
462| -------- | ------------------------------ |
463| 201      | Permission denied.  |
464| 401      | Parameter error. Possible causes: Incorrect parameter types.  |
465| 801      | Capability not supported.  |
466
467**示例**:
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
486获取当前应用所有创建的Calendar对象以及默认Calendar对象,使用callback异步回调。
487
488**需要权限**:ohos.permission.READ_CALENDAR
489
490**系统能力**: SystemCapability.Applications.CalendarData
491
492**参数**:
493
494| 参数名   | 类型                                   | 必填 | 说明                                      |
495| -------- | -------------------------------------- | ---- | ----------------------------------------- |
496| callback | AsyncCallback<[Calendar](#calendar)[]> | 是   | 回调函数, 返回查询到的Calendar对象数组。 |
497
498**错误码:**
499
500以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
501
502| 错误码ID | 错误信息                        |
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**示例**:
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
531获取当前应用所有创建的Calendar对象以及默认Calendar对象,使用Promise异步回调。
532
533**需要权限**: ohos.permission.READ_CALENDAR
534
535**系统能力**: SystemCapability.Applications.CalendarData
536
537**返回值**:
538
539| 类型                             | 说明                                        |
540| -------------------------------- | ------------------------------------------- |
541| Promise<[Calendar](#calendar)[]> | Promise对象,返回查询到的Calendar对象数组。 |
542
543**错误码:**
544
545以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
546
547| 错误码ID | 错误信息                        |
548| -------- | ------------------------------ |
549| 201      | Permission denied.  |
550| 401      | Parameter error. Possible causes: Incorrect parameter types.  |
551| 801      | Capability not supported.  |
552
553**示例**:
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
574创建单个日程,入参Event不填日程id,调用该接口会跳转到日程创建页面,使用Promise异步回调。使用该接口创建的日程,三方应用无法查询和修改,只能通过系统日历进行查询和修改。
575
576**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
577
578**系统能力**: SystemCapability.Applications.CalendarData
579
580**参数**:
581
582| 参数名 | 类型            | 必填 | 说明        |
583| ------ | --------------- | ---- | ----------- |
584| event  | [Event](#event) | 是   | Event对象。 |
585
586**返回值**:
587
588| 类型           | 说明                                                                          |
589| -------------- |-----------------------------------------------------------------------------|
590| Promise&lt;number&gt; | Promise对象,返回日程的id,日程id是日程的唯一标识符,是数据库的自增主键。创建失败时没有返回值;当返回值小于0时代表用户取消创建;当返回值大于0时代表日程创建成功;没有等于0的情况。 |
591
592**示例**:
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
614下列API示例中需先通过[createCalendar()](#createcalendar)、[getCalendar()](#getcalendar)中任一方法获取Calendar对象,再通过此对象调用对应方法,对该Calendar下的日程进行创建、删除、修改、查询等操作。
615
616### 属性
617
618**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
619
620**系统能力**:SystemCapability.Applications.CalendarData
621
622| 名称 | 类型   | 只读 | 可选 | 说明                                                                       |
623| ---- | ------ | ---- |----|--------------------------------------------------------------------------|
624| id   | number | 是   | 否  | 日历账户id,日历账户id是日历账户的唯一标识符,是数据库的自增主键,小于0代表日历账户创建失败,大于0代表日历账户创建成功,没有等于0的情况。 |
625
626### addEvent
627
628addEvent(event: Event, callback: AsyncCallback\<number>): void
629
630创建日程,入参Event不填日程id,使用callback异步回调。
631
632**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
633
634**系统能力**: SystemCapability.Applications.CalendarData
635
636**参数**:
637
638| 参数名   | 类型                   | 必填 | 说明                                                                    |
639| -------- | ---------------------- | ---- |-----------------------------------------------------------------------|
640| event    | [Event](#event)        | 是   | Event对象。                                                              |
641| callback | AsyncCallback\<number> | 是   | 回调函数,返回日程id,日程id是日程的唯一标识符,是数据库的自增主键,小于0代表日程创建失败,大于0代表日程创建成功,没有等于0的情况。 |
642
643**示例**:
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
675创建日程,入参Event不填日程id,使用Promise异步回调。
676
677**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
678
679**系统能力**: SystemCapability.Applications.CalendarData
680
681**参数**:
682
683| 参数名 | 类型            | 必填 | 说明        |
684| ------ | --------------- | ---- | ----------- |
685| event  | [Event](#event) | 是   | Event对象。 |
686
687**返回值**:
688
689| 类型             | 说明                        |
690| ---------------- | --------------------------- |
691| Promise\<number> | Promise对象,返回日程的id。 |
692
693**示例**:
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
725批量创建日程,入参Event不填日程id,使用callback异步回调。
726
727**系统能力**: SystemCapability.Applications.CalendarData
728
729**参数**:
730
731| 参数名   | 类型                 | 必填 | 说明            |
732| -------- | -------------------- | ---- | --------------- |
733| events   | [Event](#event)[]    | 是   | Event对象数组。 |
734| callback | AsyncCallback\<void> | 是   | 回调函数。      |
735
736**示例**:
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
777批量创建日程,入参Event不填日程id,使用Promise异步回调。
778
779**系统能力**: SystemCapability.Applications.CalendarData
780
781**参数**:
782
783| 参数名 | 类型              | 必填 | 说明            |
784| ------ | ----------------- | ---- | --------------- |
785| events | [Event](#event)[] | 是   | Event对象数组。 |
786
787**返回值**:
788
789| 类型           | 说明                      |
790| -------------- | ------------------------- |
791| Promise\<void> | 无返回结果的Promise对象。 |
792
793**示例**:
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
832删除指定id的日程,使用callback异步回调。
833
834**系统能力**: SystemCapability.Applications.CalendarData
835
836**参数**:
837
838| 参数名   | 类型                 | 必填 | 说明                                     |
839| -------- | -------------------- | ---- |----------------------------------------|
840| id       | number               | 是   | 日程id,传入的日程id为正整数,表示已创建日程的id,是日程的唯一标识符。 |
841| callback | AsyncCallback\<void> | 是   | 回调函数。                                  |
842
843**示例**:
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
884删除指定id的日程,使用Promise异步回调。
885
886**系统能力**: SystemCapability.Applications.CalendarData
887
888**参数**:
889
890| 参数名 | 类型   | 必填 | 说明     |
891| ------ | ------ | ---- | -------- |
892| id     | number | 是   | 日程id。 |
893
894**返回值**:
895
896| 类型           | 说明                      |
897| -------------- | ------------------------- |
898| Promise\<void> | 无返回结果的Promise对象。 |
899
900**示例**:
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
939根据日程id,批量删除日程,使用callback异步回调。
940
941**系统能力**: SystemCapability.Applications.CalendarData
942
943**参数**:
944
945| 参数名   | 类型                 | 必填 | 说明         |
946| -------- | -------------------- | ---- | ------------ |
947| ids      | number[]             | 是   | 日程id数组。 |
948| callback | AsyncCallback\<void> | 是   | 回调函数。   |
949
950**示例**:
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
1003根据日程id,批量删除日程,使用Promise异步回调。
1004
1005**系统能力**: SystemCapability.Applications.CalendarData
1006
1007**参数**:
1008
1009| 参数名 | 类型     | 必填 | 说明         |
1010| ------ | -------- | ---- | ------------ |
1011| ids    | number[] | 是   | 日程id数组。 |
1012
1013**返回值**:
1014
1015| 类型           | 说明                      |
1016| -------------- | ------------------------- |
1017| Promise\<void> | 无返回结果的Promise对象。 |
1018
1019**示例**:
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
1070更新日程,使用callback异步回调。
1071
1072**系统能力**: SystemCapability.Applications.CalendarData
1073
1074**参数**:
1075
1076| 参数名   | 类型                 | 必填 | 说明        |
1077| -------- | -------------------- | ---- | ----------- |
1078| event    | [Event](#event)      | 是   | Event对象。 |
1079| callback | AsyncCallback\<void> | 是   | 回调函数。  |
1080
1081**示例**:
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
1124更新日程,使用Promise异步回调。
1125
1126**系统能力**: SystemCapability.Applications.CalendarData
1127
1128**参数**:
1129
1130| 参数名 | 类型            | 必填 | 说明        |
1131| ------ | --------------- | ---- | ----------- |
1132| event  | [Event](#event) | 是   | Event对象。 |
1133
1134**返回值**:
1135
1136| 类型           | 说明                      |
1137| -------------- | ------------------------- |
1138| Promise\<void> | 无返回结果的Promise对象。 |
1139
1140**示例**:
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
1181查询当前日历下所有日程,使用callback异步回调。
1182
1183**系统能力**: SystemCapability.Applications.CalendarData
1184
1185**参数**:
1186
1187| 参数名   | 类型                             | 必填 | 说明                              |
1188| -------- | -------------------------------- | ---- | --------------------------------- |
1189| callback | AsyncCallback<[Event](#event)[]> | 是   | 回调函数,返回的是Event对象数组。 |
1190
1191**示例**:
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
1219获取Calendar下符合查询条件的Event,使用callback异步回调。
1220
1221**系统能力**: SystemCapability.Applications.CalendarData
1222
1223**参数**:
1224
1225| 参数名      | 类型                             | 必填 | 说明                              |
1226| ----------- | -------------------------------- | ---- | --------------------------------- |
1227| eventFilter | [EventFilter](#eventfilter)      | 是   | 查询条件。                        |
1228| eventKey    | (keyof [Event](#event))[]        | 是   | 查询字段。                        |
1229| callback    | AsyncCallback<[Event](#event)[]> | 是   | 回调函数,返回的是Event对象数组。 |
1230
1231**示例**:
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
1283获取Calendar下符合查询条件的Event,使用Promise异步回调。
1284只有一个入参时,参数必须为查询条件,对应参数类型为EventFilter。
1285
1286**系统能力**: SystemCapability.Applications.CalendarData
1287
1288**参数**:
1289
1290| 参数名      | 类型                        | 必填 | 说明       |
1291| ----------- | --------------------------- | ---- | ---------- |
1292| eventFilter | [EventFilter](#eventfilter) | 否   | 查询条件。 |
1293| eventKey    | (keyof [Event](#event))[]   | 否   | 查询字段。 |
1294
1295**返回值**:
1296
1297| 类型                       | 说明                                |
1298| -------------------------- | ----------------------------------- |
1299| Promise<[Event](#event)[]> | Promise对象,返回的是Event对象数组。 |
1300
1301**示例**:
1302
1303```typescript
1304import { BusinessError } from '@kit.BasicServicesKit';
1305import { calendarMgr } from '../entryability/EntryAbility';
1306
1307let calendar : calendarManager.Calendar | undefined = undefined;
1308const date = new Date();
1309const event: calendarManager.Event = {
1310  title: 'MyEvent',
1311  type: calendarManager.EventType.IMPORTANT,
1312  startTime: date.getTime(),
1313  endTime: date.getTime() + 60 * 60 * 1000
1314};
1315calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1316  if (err) {
1317    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1318  } else {
1319    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1320    calendar = data;
1321    await calendar.addEvent(event).then((data: number) => {
1322      console.info(`Succeeded in adding event, id -> ${data}`);
1323    }).catch((err: BusinessError) => {
1324      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1325    });
1326    // 根据MyEvent进行模糊查询,如果存在类似标题为MyEvent1类型的日程,也可查询出来
1327    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
1328    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1329      console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1330    }).catch((err: BusinessError) => {
1331      console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1332    });
1333  }
1334});
1335```
1336
1337### getConfig
1338
1339getConfig(): CalendarConfig
1340
1341获取日历配置信息。
1342
1343**系统能力**: SystemCapability.Applications.CalendarData
1344
1345**返回值**:
1346
1347| 类型                              | 说明           |
1348| --------------------------------- | -------------- |
1349| [CalendarConfig](#calendarconfig) | 日历配置信息。 |
1350
1351**示例**:
1352
1353```typescript
1354import { calendarMgr } from '../entryability/EntryAbility';
1355import { BusinessError } from '@kit.BasicServicesKit';
1356
1357let calendar : calendarManager.Calendar | undefined = undefined;
1358calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1359  if (err) {
1360    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1361  } else {
1362    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1363    calendar = data;
1364    const config = calendar.getConfig();
1365    console.info("Succeeded in getting config");
1366  }
1367});
1368```
1369
1370### setConfig
1371
1372setConfig(config: CalendarConfig, callback: AsyncCallback\<void>): void
1373
1374设置日历配置信息,使用callback异步回调。
1375
1376**系统能力**: SystemCapability.Applications.CalendarData
1377
1378**参数**:
1379
1380| 参数名   | 类型                              | 必填 | 说明           |
1381| -------- | --------------------------------- | ---- | -------------- |
1382| config   | [CalendarConfig](#calendarconfig) | 是   | 日历配置信息。 |
1383| callback | AsyncCallback\<void>              | 是   | 回调函数。     |
1384
1385**示例**:
1386
1387```typescript
1388import { BusinessError } from '@kit.BasicServicesKit';
1389import { calendarMgr } from '../entryability/EntryAbility';
1390
1391let calendar : calendarManager.Calendar | undefined = undefined;
1392const config: calendarManager.CalendarConfig = {
1393  enableReminder: true,
1394  color: '#aabbcc'
1395};
1396calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1397  if (err) {
1398    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1399  } else {
1400    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1401    calendar = data;
1402    calendar.setConfig(config, (err: BusinessError) => {
1403      if (err) {
1404        console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
1405      } else {
1406        console.info(`Succeeded in setting config, config -> ${JSON.stringify(config)}`);
1407      }
1408    });
1409  }
1410});
1411```
1412
1413### setConfig
1414
1415setConfig(config: CalendarConfig): Promise\<void>
1416
1417设置日历配置信息,使用Promise异步回调。
1418
1419**系统能力**: SystemCapability.Applications.CalendarData
1420
1421**参数**:
1422
1423| 参数名 | 类型                              | 必填 | 说明           |
1424| ------ | --------------------------------- | ---- | -------------- |
1425| config | [CalendarConfig](#calendarconfig) | 是   | 日历配置信息。 |
1426
1427**返回值**:
1428
1429| 类型           | 说明                      |
1430| -------------- | ------------------------- |
1431| Promise\<void> | 无返回结果的Promise对象。 |
1432
1433**示例**:
1434
1435```typescript
1436import { BusinessError } from '@kit.BasicServicesKit';
1437import { calendarMgr } from '../entryability/EntryAbility';
1438
1439let calendar : calendarManager.Calendar | undefined = undefined;
1440const config: calendarManager.CalendarConfig = {
1441  enableReminder: true,
1442  color: '#aabbcc'
1443};
1444calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1445  if (err) {
1446    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1447  } else {
1448    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1449    calendar = data;
1450    calendar.setConfig(config).then(() => {
1451      console.info(`Succeeded in setting config, data->${JSON.stringify(config)}`);
1452    }).catch((err: BusinessError) => {
1453      console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
1454    });
1455  }
1456});
1457```
1458
1459### getAccount
1460
1461getAccount(): CalendarAccount
1462
1463获取日历账户信息。
1464
1465**系统能力**: SystemCapability.Applications.CalendarData
1466
1467**返回值**:
1468
1469| 类型                                | 说明           |
1470| ----------------------------------- | -------------- |
1471| [CalendarAccount](#calendaraccount) | 日历账户信息。 |
1472
1473**示例**:
1474
1475```typescript
1476import { calendarMgr } from '../entryability/EntryAbility';
1477import { BusinessError } from '@kit.BasicServicesKit';
1478
1479let calendar : calendarManager.Calendar | undefined = undefined;
1480calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1481  if (err) {
1482    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1483  } else {
1484    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1485    calendar = data;
1486    const account = calendar.getAccount();
1487    console.info(`succeeded in getting account, account -> ${JSON.stringify(account)}`);
1488  }
1489});
1490```
1491
1492### queryEventInstances<sup>18+</sup>
1493
1494**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
1495
1496queryEventInstances(start: number, end: number, ids?: number[], eventKey?: (keyof Event)[]): Promise\<Event[]>
1497
1498获取Calendar下符合查询条件的日程实例,使用Promise异步回调。
1499
1500**系统能力**: SystemCapability.Applications.CalendarData
1501
1502**参数**:
1503
1504| 参数名      | 类型                        | 必填   | 说明         |
1505| ----------- | --------------------------- |------|------------|
1506| start  | number | 是    | 日程开始时间,类型为13位时间戳。    |
1507| end    | number | 是    | 日程结束时间,类型为13位时间戳。    |
1508| ids    | number[] | 否    | 需要查询的日程id数组,可为空数组或undefined,id>0。    |
1509| eventKey    | (keyof [Event](#event))[]   | 否    | 所有查询日程的字段。 |
1510
1511**返回值**:
1512
1513| 类型                       | 说明                                |
1514| -------------------------- | ----------------------------------- |
1515| Promise<[Event](#event)[]> | Promise对象,返回的是Event对象数组。 |
1516
1517**示例**:
1518
1519```typescript
1520import { BusinessError } from '@kit.BasicServicesKit';
1521import { calendarMgr } from '../entryability/EntryAbility';
1522
1523let calendar : calendarManager.Calendar | undefined = undefined;
1524const date = new Date();
1525const event: calendarManager.Event = {
1526  title: 'MyEvent',
1527  type: calendarManager.EventType.IMPORTANT,
1528  startTime: date.getTime(),
1529  endTime: date.getTime() + 60 * 60 * 1000
1530};
1531calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1532  if (err) {
1533    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1534  } else {
1535    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1536    calendar = data;
1537    await calendar.addEvent(event).then((data: number) => {
1538      console.info(`Succeeded in adding event, id -> ${data}`);
1539    }).catch((err: BusinessError) => {
1540      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1541    });
1542    calendar?.queryEventInstances(date.getTime(), date.getTime() + 60 * 60 * 1000, undefined,
1543      ["title", "startTime", "endTime", "instanceStartTime", "instanceEndTime",]).then((data: calendarManager.Event[]) => {
1544      console.info(`Succeeded in getting event instances, data -> ${JSON.stringify(data)}`);
1545    }).catch((err: BusinessError) => {
1546      console.error(`Failed to get event instances. Code: ${err.code}, message: ${err.message}`);
1547    });
1548  }
1549});
1550```
1551
1552## CalendarAccount
1553
1554日历账户信息。
1555
1556**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1557
1558**系统能力**:SystemCapability.Applications.CalendarData
1559
1560| 名称        | 类型                          | 只读 | 可选 | 说明                               |
1561| ----------- | ----------------------------- | ---- |----|----------------------------------|
1562| name        | string                        | 是   | 否  | 账户名称(面向开发者)。                     |
1563| type        | [CalendarType](#calendartype) | 否   | 否  | 账户类型。                            |
1564| displayName | string                        | 否   | 是  | 账户显示在日历应用上的名称(面向用户)。不填时,默认为空字符串。 |
1565
1566## CalendarConfig
1567
1568日历配置信息。
1569
1570**系统能力**:SystemCapability.Applications.CalendarData
1571
1572| 名称           | 类型     | 只读    | 可选 | 说明                                                         |
1573| -------------- |--------|-------|----| ------------------------------------------------------------ |
1574| enableReminder | boolean | 否     | 是  | 是否打开Calendar下所有Event提醒能力。当取值为true时,该Calendar下所有Event具备提醒能力;当取值为false时,不具备提醒能力,默认具备提醒能力。 |
1575| color          | number \| string | 否   | 是  | 设置Calendar颜色。不填时,默认值为'#0A59F7'。                |
1576
1577## Event
1578
1579日程对象,包含日程标题、开始时间、结束时间等信息。
1580
1581**系统能力**:SystemCapability.Applications.CalendarData
1582
1583| 名称           | 类型                              | 只读 | 可选 | 说明                                                                                                                                                                                                      |
1584| -------------- | --------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1585| id             | number                            | 否   | 是  | 日程id。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                            |
1586| type           | [EventType](#eventtype)           | 否   | 否  | 日程类型。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                            |
1587| title          | string                            | 否   | 是  | 日程标题。不填时,默认为空字符串。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                |
1588| location       | [Location](#location)             | 否   | 是  | 日程地点。不填时,默认为null。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                |
1589| startTime      | number                            | 否   | 否  | 日程开始时间,需要13位时间戳。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                   |
1590| endTime        | number                            | 否   | 否  | 日程结束时间,需要13位时间戳。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                  |
1591| isAllDay       | boolean                           | 否   | 是  | 是否为全天日程。当取值为true时,说明为全天日程;当取值为false时,说明不是全天日程,默认为非全天日程。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                           |
1592| attendee       | [Attendee](#attendee)[]           | 否   | 是  | 会议日程参与者。不填时,默认为null。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                              |
1593| timeZone       | string                            | 否   | 是  | 日程时区。不填时,默认为当前所在时区,当需要创建与当前不一样的时区时,可填入对应的时区。可通过[getTimeZone()](../apis-basic-services-kit/js-apis-date-time.md#systemdatetimegettimezone)获取当前系统时区。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
1594| reminderTime   | number[]                          | 否   | 是  | 日程提醒时间,单位为分钟。填写x分钟,即距开始时间提前x分钟提醒,不填时,默认为不提醒。为负值时表示延期多长时间提醒。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                        |
1595| recurrenceRule | [RecurrenceRule](#recurrencerule) | 否   | 是  | 日程重复规则。不填时,默认为不重复。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                               |
1596| description    | string                            | 否   | 是  | 日程描述。不填时,默认为空字符串。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                 |
1597| service        | [EventService](#eventservice)     | 否   | 是  | <!--RP1-->日程服务。不填时,默认没有一键服务。暂不支持此功能。<!--RP1End-->   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                               |
1598| identifier<sup>12+</sup>     | string                            | 否   | 是  | 写入方可指定日程唯一标识。不填时,默认为null。  <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                         |
1599| isLunar<sup>12+</sup>     | boolean                            | 否   | 是  | 是否为农历日程。当取值为true时,说明为农历日程;当取值为false时,说明不是农历日程,默认为非农历日程。  <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                           |
1600| instanceStartTime<sup>18+</sup> | number                            | 否   | 是  | 日程实例开始时间,需要13位时间戳。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                                                                                                                 |
1601| instanceEndTime<sup>18+</sup>   | number                            | 否   | 是  | 日程实例结束时间,需要13位时间戳。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数。  <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                                                                                                                |
1602
1603## CalendarType
1604
1605账户类型枚举。
1606
1607**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1608
1609**系统能力**:SystemCapability.Applications.CalendarData
1610
1611| 名称       | 值           | 说明                 |
1612| ---------- | ------------ | -------------------- |
1613| LOCAL      | 'local'      | 本地账户。           |
1614| EMAIL      | 'email'      | 邮箱账户。           |
1615| BIRTHDAY   | 'birthday'   | 生日账户。           |
1616| CALDAV     | 'caldav'     | 支持CalDAV协议账户。 |
1617| SUBSCRIBED | 'subscribed' | 订阅账户。           |
1618
1619## Location
1620
1621日程地点。
1622
1623**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1624
1625**系统能力**:SystemCapability.Applications.CalendarData
1626
1627| 名称      | 类型   | 只读 | 可选 | 说明                     |
1628| --------- | ------ | ---- |----| ------------------------ |
1629| location  | string | 否   | 是  | 地点位置。默认为空字符串。 |
1630| longitude | number | 否   | 是  | 地点经度。默认为0。        |
1631| latitude  | number | 否   | 是  | 地点纬度。默认为0。        |
1632
1633## EventFilter
1634
1635日程过滤器,查询日程时进行筛选过滤,获取符合条件的日程。
1636
1637通过[filterById()](#filterbyid)、[filterByTime()](#filterbytime)、[filterByTitle()](#filterbytitle)任一方法获取日程过滤器,传入[getEvents()](#getevents)过滤。
1638
1639### filterById
1640
1641static filterById(ids: number[]): EventFilter
1642
1643根据日程id过滤日程。
1644
1645**系统能力**: SystemCapability.Applications.CalendarData
1646
1647**参数**:
1648
1649| 参数名 | 类型     | 必填 | 说明         |
1650| ------ | -------- | ---- | ------------ |
1651| ids    | number[] | 是   | 日程id数组。 |
1652
1653**返回值**:
1654
1655| 类型                        | 说明                 |
1656| --------------------------- | -------------------- |
1657| [EventFilter](#eventfilter) | 返回日程过滤器对象。 |
1658
1659**示例**:
1660
1661```typescript
1662import { BusinessError } from '@kit.BasicServicesKit';
1663import { calendarMgr } from '../entryability/EntryAbility';
1664
1665let calendar : calendarManager.Calendar | undefined = undefined;
1666let id1: number = 0;
1667let id2: number = 0;
1668const date = new Date();
1669const event1: calendarManager.Event = {
1670  type: calendarManager.EventType.NORMAL,
1671  startTime: date.getTime(),
1672  endTime: date.getTime() + 60 * 60 * 1000
1673};
1674const event2: calendarManager.Event = {
1675  type: calendarManager.EventType.IMPORTANT,
1676  startTime: date.getTime(),
1677  endTime: date.getTime() + 60 * 60 * 1000
1678};
1679calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1680  if (err) {
1681    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1682  } else {
1683    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1684    calendar = data;
1685    await calendar.addEvent(event1).then((data: number) => {
1686      console.info(`Succeeded in adding event, id -> ${data}`);
1687      id1 = data;
1688    }).catch((err: BusinessError) => {
1689      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1690    });
1691    await calendar.addEvent(event2).then((data: number) => {
1692      console.info(`Succeeded in adding event, id -> ${data}`);
1693      id2 = data;
1694    }).catch((err: BusinessError) => {
1695      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1696    });
1697    const filter = calendarManager.EventFilter.filterById([id1, id2]);
1698    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1699      console.info(`Succeeded in getting events filter by id, data -> ${JSON.stringify(data)}`);
1700    }).catch((err: BusinessError) => {
1701      console.error(`Failed to filter by id. Code: ${err.code}, message: ${err.message}`);
1702    });
1703  }
1704});
1705```
1706
1707### filterByTime
1708
1709static filterByTime(start: number, end: number): EventFilter
1710
1711根据日程时间过滤日程。
1712
1713**系统能力**: SystemCapability.Applications.CalendarData
1714
1715**参数**:
1716
1717| 参数名 | 类型   | 必填 | 说明       |
1718| ------ | ------ | ---- | ---------- |
1719| start  | number | 是   | 开始时间。 |
1720| end    | number | 是   | 结束时间。 |
1721
1722**返回值**:
1723
1724| 类型                        | 说明                 |
1725| --------------------------- | -------------------- |
1726| [EventFilter](#eventfilter) | 返回日程过滤器对象。 |
1727
1728**示例**:
1729
1730```typescript
1731import { BusinessError } from '@kit.BasicServicesKit';
1732import { calendarMgr } from '../entryability/EntryAbility';
1733
1734let calendar : calendarManager.Calendar | undefined = undefined;
1735const event1: calendarManager.Event = {
1736  type: calendarManager.EventType.NORMAL,
1737  startTime: 1686931200000,
1738  endTime: 1687017600000
1739};
1740const event2: calendarManager.Event = {
1741  type: calendarManager.EventType.IMPORTANT,
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(event1).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    await calendar.addEvent(event2).then((data: number) => {
1757      console.info(`Succeeded in adding event, id -> ${data}`);
1758    }).catch((err: BusinessError) => {
1759      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1760    });
1761    const filter = calendarManager.EventFilter.filterByTime(1686931200000, 1687017600000);
1762    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1763      console.info(`Succeeded in getting events filter by time, data -> ${JSON.stringify(data)}`);
1764    }).catch((err: BusinessError) => {
1765      console.error(`Failed to filter by time. Code: ${err.code}, message: ${err.message}`);
1766    });
1767  }
1768});
1769```
1770
1771### filterByTitle
1772
1773static filterByTitle(title: string): EventFilter
1774
1775根据日程标题过滤日程,该条件为模糊匹配。
1776
1777**系统能力**: SystemCapability.Applications.CalendarData
1778
1779**参数**:
1780
1781| 参数名 | 类型   | 必填 | 说明       |
1782| ------ | ------ | ---- | ---------- |
1783| title  | string | 是   | 日程标题。 |
1784
1785**返回值**:
1786
1787| 类型                        | 说明                 |
1788| --------------------------- | -------------------- |
1789| [EventFilter](#eventfilter) | 返回日程过滤器对象。 |
1790
1791**示例**:
1792
1793```typescript
1794import { BusinessError } from '@kit.BasicServicesKit';
1795import { calendarMgr } from '../entryability/EntryAbility';
1796
1797let calendar : calendarManager.Calendar | undefined = undefined;
1798const event: calendarManager.Event = {
1799  title: 'MyEvent',
1800  type: calendarManager.EventType.NORMAL,
1801  startTime: 1686931200000,
1802  endTime: 1687017600000
1803};
1804calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1805  if (err) {
1806    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1807  } else {
1808    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1809    calendar = data;
1810    await calendar.addEvent(event).then((data: number) => {
1811      console.info(`Succeeded in adding event, id -> ${data}`);
1812    }).catch((err: BusinessError) => {
1813      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1814    });
1815    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
1816    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1817      console.info(`Succeeded in getting events filter by title, data -> ${JSON.stringify(data)}`);
1818    }).catch((err: BusinessError) => {
1819      console.error(`Failed to filter by title. Code: ${err.code}, message: ${err.message}`);
1820    });
1821  }
1822});
1823```
1824
1825## EventType
1826
1827日程类型枚举。
1828
1829**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1830
1831**系统能力**:SystemCapability.Applications.CalendarData
1832
1833| 名称      | 值   | 说明                      |
1834| --------- | ---- |-------------------------|
1835| NORMAL    | 0    | 普通日程,例如会议,闹钟等日常提醒的日程。   |
1836| IMPORTANT | 1    | 重要日程,例如结婚纪念日等具有重要意义的日期,不推荐三方开发者使用,重要日程类型不支持一键服务跳转功能及无法自定义提醒时间。 |
1837
1838## RecurrenceRule
1839
1840日程重复规则。
1841
1842**系统能力**:SystemCapability.Applications.CalendarData
1843
1844| 名称                | 类型                                        | 只读 | 可选 | 说明                                                                                                                                                                                                                                                                                                                              |
1845| ------------------- | ------------------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1846| recurrenceFrequency | [RecurrenceFrequency](#recurrencefrequency) | 否   | 否  | 日程重复规则类型。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                                                                                 |
1847| expire              | number                                      | 否   | 是  | 重复周期截止日。不填时,默认为0。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                                                                        |
1848| count<sup>12+</sup>               | number                                      | 否   | 是  | 重复日程的重复次数,取值为非负整数,不填时默认为0,表示不会限定重复次数,会一直重复,取值为负时,效果等同于取值为0。当count与expire同时存在时以count为准。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                     |
1849| interval<sup>12+</sup>            | number                                      | 否   | 是  | 重复日程的重复间隔,取值为非负整数,不填时默认为0,表示日程按照重复规则一直重复,没有间隔。取值为负时,效果等同于取值为0。当interval与expire同时存在时以expire为准。 <br/>此属性与recurrenceFrequency重复规则相关,不同的重复规则下,表示的重复间隔不同,以interval取2为例,分为以下几种情况:<br/>每天重复时:表示日程每隔两天重复一次。<br/>每周重复时:表示日程每隔两周重复一次。<br/>每月重复时:表示日程每隔两月重复一次。<br/>每年重复时:表示日程每隔两年重复一次。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
1850| excludedDates<sup>12+</sup>       | number[]                                    | 否   | 是  | 重复日程的排除日期,参数取值为时间戳格式,不填时,默认为空,表示没有排除的日期,0或负数为无效值,与空值效果相同。  <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                                 |
1851| daysOfWeek<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一周第几天重复。不填时,默认为空,表示没有一周第几天重复的规则。范围为1到7,对应周一到周日,其他值为无效值,与空值效果相同。  <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                         |
1852| daysOfMonth<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一个月第几天重复。不填时,默认为空,表示没有一个月第几天重复的规则。范围为1到31,1到31对应1到31号,其他值为无效值,与空值效果相同。若当月没有31号,31也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                  |
1853| daysOfYear<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一年第几天重复。不填时,默认为空,表示没有一年第几天重复的规则。范围为1到366,1到366表示一年的1到366天,其他值为无效值,与空值效果相同。若当年没有366天,366也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                            |
1854| weeksOfMonth<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一个月第几周重复。不填时,默认为空,表示没有一个月第几周重复的规则。范围为1到5,1到5为每月的第1到第5周,其他值为无效值,与空值效果相同。若当月没有第五周,5也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                  |
1855| weeksOfYear<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一年中第几周重复。不填时,默认为空,表示没有一年第几周重复的规则。范围为1到53,1到53为每年的第1到第53周,其他值为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                |
1856| monthsOfYear<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一年中第几个月重复。不填时,默认为空,表示没有一年第几个月重复的规则。范围为1到12,1到12为每年的1到12月,其他值为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                |
1857## RecurrenceFrequency
1858
1859日程重复规则类型枚举。
1860
1861**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1862
1863**系统能力**:SystemCapability.Applications.CalendarData
1864
1865| 名称    | 值   | 说明       |
1866| ------- | ---- | ---------- |
1867| YEARLY  | 0    | 每年重复。 |
1868| MONTHLY | 1    | 每月重复。 |
1869| WEEKLY  | 2    | 每周重复。 |
1870| DAILY   | 3    | 每天重复。 |
1871
1872## Attendee
1873
1874会议日程参与者。
1875
1876**系统能力**:SystemCapability.Applications.CalendarData
1877
1878| 名称  | 类型   | 只读 | 可选 | 说明                                                                 |
1879| ----- | ------ | ---- |----|--------------------------------------------------------------------|
1880| name  | string | 否   | 否  | 会议日程参与者的姓名。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。  |
1881| email | string | 否   | 否  | 会议日程参与者的邮箱。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
1882| role<sup>12+</sup>  | [AttendeeRole](#attendeerole12) | 否   | 是  | 会议日程参与者的角色。  <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。  |
1883| status<sup>18+</sup> | [AttendeeStatus](#attendeestatus18) | 否   | 是 | 会议日程参与者的状态,不填时默认为空。   <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
1884| type<sup>18+</sup>   | [AttendeeType](#attendeetype18)     | 否   | 是 | 会议日程参与者的类型,不填时默认为空。   <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
1885
1886## EventService
1887
1888日程服务。
1889
1890**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1891
1892**系统能力**:SystemCapability.Applications.CalendarData
1893
1894| 名称        | 类型                        | 只读 | 可选 | 说明                                  |
1895| ----------- | --------------------------- | ---- |----|-------------------------------------|
1896| type        | [ServiceType](#servicetype) | 否   | 否  | 服务类型。                               |
1897| uri         | string                      | 否   | 否  | 服务的uri,格式为Deeplink类型。可以跳转到三方应用相应界面。 |
1898| description | string                      | 否   | 是  | 服务辅助描述。不填时,默认为空字符串。                 |
1899
1900## ServiceType
1901
1902日程服务类型枚举。
1903
1904**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1905
1906**系统能力**:SystemCapability.Applications.CalendarData
1907
1908| 名称            | 值               | 说明         |
1909| --------------- | ---------------- | ------------ |
1910| MEETING         | 'Meeting'        | 一键入会。   |
1911| WATCHING        | 'Watching'       | 一键追剧。   |
1912| REPAYMENT       | 'Repayment'      | 一键还款。   |
1913| LIVE            | 'Live'           | 一键直播。   |
1914| SHOPPING        | 'Shopping'       | 一键购物。   |
1915| TRIP            | 'Trip'           | 一键查看。   |
1916| CLASS           | 'Class'          | 一键上课。   |
1917| SPORTS_EVENTS   | 'SportsEvents'   | 一键看赛事。 |
1918| SPORTS_EXERCISE | 'SportsExercise' | 一键运动。   |
1919
1920## AttendeeRole<sup>12+</sup>
1921
1922会议日程参与者角色类型枚举。
1923
1924**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1925
1926**系统能力**:SystemCapability.Applications.CalendarData
1927
1928| 名称           | 值             | 说明     |
1929|--------------|---------------|--------|
1930| ORGANIZER   | 'organizer'   | 会议组织者。 |
1931| PARTICIPANT | 'participant' | 会议参与者。 |
1932
1933## AttendeeStatus<sup>18+</sup>
1934
1935会议日程参与者状态类型枚举。
1936
1937**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
1938
1939**系统能力**:SystemCapability.Applications.CalendarData
1940
1941| 名称                         | 值   | 说明       |
1942|----------------------------|-----|----------|
1943| UNKNOWN      | 0   | 参与者状态未知。 |
1944| TENTATIVE    | 1   | 参与者状态暂定。 |
1945| ACCEPTED     | 2   | 参与者已接受。  |
1946| DECLINED     | 3   | 参与者已拒绝。  |
1947| UNRESPONSIVE | 4   | 参与者未响应。  |
1948
1949## AttendeeType<sup>18+</sup>
1950
1951会议日程参与者受邀类型枚举。
1952
1953**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
1954
1955**系统能力**:SystemCapability.Applications.CalendarData
1956
1957| 名称                     | 值   | 说明                 |
1958|------------------------|-----|--------------------|
1959| REQUIRED | 1   | 会议日程主送者。           |
1960| OPTIONAL | 2   | 会议日程抄送者。           |
1961| RESOURCE | 3   | 会议中使用的资源(电视或投影仪等)。 |
1962