• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.calendarManager (日程管理能力)
2
3<!--Kit: Calendar Kit-->
4<!--Subsystem: Applications-->
5<!--Owner: @qq_42718467-->
6<!--Designer: @huangxinwei-->
7<!--Tester: @z30055209-->
8<!--Adviser: @ge-yafang-->
9
10本模块提供日历与日程管理能力,包括日历和日程的创建、删除、修改、查询等。
11
12- 日历管理器[CalendarManager](#calendarmanager)用于管理日历[Calendar](#calendar)。
13
14- 日历[Calendar](#calendar)主要包含账户信息[CalendarAccount](#calendaraccount)和配置信息[CalendarConfig](#calendarconfig)。日历Calendar与日程Event属于从属关系,需要先创建日历Calendar对象,然后再通过日历Calendar创建日程Event对象,一个Calendar可以有多个Event,一个Event只属于一个Calendar。日历管理器是对日历的管理,日程过滤器是对日程的管理。
15
16> **说明:**
17>
18> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
19>
20> - 进行日历或日程的读取时,需要申请ohos.permission.READ_CALENDARohos.permission.READ_WHOLE_CALENDAR权限。
21>
22> - 进行日历或日程的添加、删除或修改时,需要申请ohos.permission.WRITE_CALENDARohos.permission.WRITE_WHOLE_CALENDAR权限。
23
24申请对应权限之后,支持的相关操作可见下表。
25
26| 申请的权限                     | 支持的日历账户操作范围                       | 支持的日程操作范围                                           |
27| ------------------------------ | -------------------------------------------- | ------------------------------------------------------------ |
28| ohos.permission.READ_CALENDAR  | - 读取系统默认日历账户<br>- 读取当前应用创建的日历账户 | - 读取系统默认日历账户下当前应用创建的日程<br/>- 读取当前应用创建的日历账户下当前应用创建的日程 |
29| ohos.permission.WRITE_CALENDAR | - 添加、删除或修改当前应用创建的日历账户               | - 添加、删除或修改系统默认日历账户下当前应用创建的日程<br>- 添加、删除或修改当前应用创建的日历账户下当前应用创建的日程 |
30| ohos.permission.READ_WHOLE_CALENDAR | - 读取所有日历账户                      | - 读取所有应用创建的日程              |
31| ohos.permission.WRITE_WHOLE_CALENDAR | - 添加、删除或修改所有日历账户                | - 添加、删除或修改所有应用创建的日程          |
32
33
34## 导入模块
35
36```typescript
37import { calendarManager } from '@kit.CalendarKit';
38```
39
40## calendarManager.getCalendarManager
41
42getCalendarManager(context: Context): CalendarManager
43
44根据上下文获取CalendarManager对象,用于管理日历。
45
46**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
47
48**系统能力**: SystemCapability.Applications.CalendarData
49
50**模型约束**:此接口仅可在Stage模型下使用。
51
52**参数**:
53
54| 参数名   | 类型                        | 必填 | 说明                                                                                                             |
55| -------- | --------------------------- | ---- |----------------------------------------------------------------------------------------------------------------|
56| context  | Context                     | 是   | 应用上下文Context,Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 |
57
58**返回值**:
59
60| 类型                           | 说明                                  |
61| ------------------------------ | ------------------------------------- |
62| CalendarManager | 返回创建的CalendarManager对象。 |
63
64**示例**:
65
66```typescript
67// 获取上下文mContext
68// 获取日历管理器calendarMgr
69// 该文件为系统生成,目录:entry/src/main/ets/entryability/EntryAbility.ets
70import {
71  abilityAccessCtrl,
72  AbilityConstant, common, PermissionRequestResult, Permissions, UIAbility, Want } from '@kit.AbilityKit';
73import { BusinessError } from '@kit.BasicServicesKit';
74import { calendarManager } from '@kit.CalendarKit';
75import { window } from '@kit.ArkUI';
76
77export let calendarMgr: calendarManager.CalendarManager | null = null;
78export let mContext: common.UIAbilityContext | null = null;
79export default class EntryAbility extends UIAbility {
80  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
81    console.info("Ability onCreate");
82  }
83
84  onDestroy(): void {
85    console.info("Ability onDestroy");
86  }
87
88  onWindowStageCreate(windowStage: window.WindowStage): void {
89    // Main window is created, set main page for this ability
90    console.info("Ability onWindowStageCreate");
91
92    windowStage.loadContent('pages/Index', (err, data) => {
93      if (err.code) {
94        console.error(`Failed to load the content. Code: ${err.code}, message: ${err.message}`);
95        return;
96      }
97      console.info(`Succeeded in loading the content. Data: ${JSON.stringify(data)}`);
98    });
99    mContext = this.context;
100    const permissions: Permissions[] = ['ohos.permission.READ_CALENDAR', 'ohos.permission.WRITE_CALENDAR'];
101    let atManager = abilityAccessCtrl.createAtManager();
102    atManager.requestPermissionsFromUser(mContext, permissions).then((result: PermissionRequestResult) => {
103      console.info(`get Permission success, result: ${JSON.stringify(result)}`);
104      calendarMgr = calendarManager.getCalendarManager(mContext);
105    }).catch((error: BusinessError) => {
106      console.error(`get Permission error, error. Code: ${error.code}, message: ${error.message}`);
107    })
108  }
109
110  onWindowStageDestroy(): void {
111    // Main window is destroyed, release UI related resources
112    console.info("Ability onWindowStageDestroy");
113  }
114
115  onForeground(): void {
116    // Ability has brought to foreground
117    console.info("Ability onForeground");
118  }
119
120  onBackground(): void {
121    // Ability has back to background
122    console.info("Ability onBackground");
123  }
124}
125```
126
127## CalendarManager
128
129下列API示例中需先通过[getCalendarManager()](#calendarmanagergetcalendarmanager)方法获取CalendarManager对象,再通过此对象调用对应方法,进行Calendar的创建、删除、修改、查询等操作。
130
131**系统能力**: SystemCapability.Applications.CalendarData
132
133
134### createCalendar
135
136createCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void
137
138根据日历账户信息,创建一个Calendar对象,使用callback异步回调。
139
140**需要权限**: ohos.permission.WRITE_CALENDARohos.permission.WRITE_WHOLE_CALENDAR
141
142**系统能力**: SystemCapability.Applications.CalendarData
143
144**参数**:
145
146| 参数名          | 类型                                  | 必填 | 说明                               |
147| --------------- | ------------------------------------- | ---- | ---------------------------------- |
148| calendarAccount | [CalendarAccount](#calendaraccount)   | 是   | 日历账户信息。                     |
149| callback        | AsyncCallback\<[Calendar](#calendar)> | 是   | 回调函数,返回创建的Calendar对象。 |
150
151**错误码:**
152
153以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
154
155| 错误码ID | 错误信息                        |
156| -------- | ------------------------------ |
157| 201      | Permission denied.  |
158| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
159| 801      | Capability not supported.  |
160
161**示例**:
162
163```typescript
164import { BusinessError } from '@kit.BasicServicesKit';
165import { calendarMgr } from '../entryability/EntryAbility';
166
167let calendar: calendarManager.Calendar | undefined = undefined;
168const calendarAccount: calendarManager.CalendarAccount = {
169  name: 'CreateMyCalendarByCallBack',
170  type: calendarManager.CalendarType.LOCAL
171};
172try {
173  calendarMgr?.createCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
174    if (err) {
175      console.error(`Failed to create calendar. Code: ${err.code}, message: ${err.message}`);
176    } else {
177      console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
178      calendar = data;
179    }
180  });
181} catch (error) {
182  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
183}
184```
185
186### createCalendar
187
188createCalendar(calendarAccount: CalendarAccount): Promise\<Calendar>
189
190根据日历账户信息,创建一个Calendar对象,使用Promise异步回调。
191
192**需要权限**: ohos.permission.WRITE_CALENDARohos.permission.WRITE_WHOLE_CALENDAR
193
194**系统能力**: SystemCapability.Applications.CalendarData
195
196**参数**:
197
198| 参数名          | 类型                                | 必填 | 说明           |
199| --------------- | ----------------------------------- | ---- | -------------- |
200| calendarAccount | [CalendarAccount](#calendaraccount) | 是   | 日历账户信息。 |
201
202**返回值**:
203
204| 类型                           | 说明                                  |
205| ------------------------------ | ------------------------------------- |
206| Promise<[Calendar](#calendar)> | Promise对象,返回创建的Calendar对象。 |
207
208**错误码:**
209
210以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
211
212| 错误码ID | 错误信息                        |
213| -------- | ------------------------------ |
214| 201      | Permission denied.  |
215| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
216| 801      | Capability not supported.  |
217
218**示例**:
219
220```typescript
221import { BusinessError } from '@kit.BasicServicesKit';
222import { calendarMgr } from '../entryability/EntryAbility';
223
224let calendar : calendarManager.Calendar | undefined = undefined;
225const calendarAccount: calendarManager.CalendarAccount = {
226  name: 'CreateMyCalendarByPromise',
227  type: calendarManager.CalendarType.LOCAL,
228  displayName : 'MyApplication'
229};
230calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
231  console.info(`Succeeded in creating calendar data->${JSON.stringify(data)}`);
232  calendar = data;
233}).catch((error : BusinessError) => {
234  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
235});
236```
237
238### deleteCalendar
239
240deleteCalendar(calendar: Calendar, callback: AsyncCallback\<void>): void
241
242删除指定Calendar对象,使用callback异步回调。
243
244**需要权限**: ohos.permission.WRITE_CALENDARohos.permission.WRITE_WHOLE_CALENDAR
245
246**系统能力**: SystemCapability.Applications.CalendarData
247
248**参数**:
249
250| 参数名   | 类型                  | 必填 | 说明           |
251| -------- | --------------------- | ---- | -------------- |
252| calendar | [Calendar](#calendar) | 是   | 即将删除的Calendar对象。 |
253| callback | AsyncCallback\<void>  | 是   | 无返回结果的AsyncCallback对象。     |
254
255**错误码:**
256
257以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
258
259| 错误码ID | 错误信息                        |
260| -------- | ------------------------------ |
261| 201      | Permission denied.  |
262| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
263| 801      | Capability not supported.  |
264
265**示例**:
266
267```typescript
268import { BusinessError } from '@kit.BasicServicesKit';
269import { calendarMgr } from '../entryability/EntryAbility';
270
271const calendarAccount: calendarManager.CalendarAccount = {
272  name: 'DeleteMyCalendarByCallBack',
273  type: calendarManager.CalendarType.LOCAL
274};
275calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
276  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
277  calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
278    if (err) {
279      console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
280    } else {
281      console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
282      calendarMgr?.deleteCalendar(data, (err1: BusinessError) => {
283        if (err1) {
284          console.error(`Failed to delete calendar. Code: ${err1.code}, message: ${err1.message}`);
285        } else {
286          console.info("Succeeded in deleting calendar");
287        }
288      });
289    }
290  });
291}).catch((error: BusinessError) => {
292  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
293})
294```
295
296### deleteCalendar
297
298deleteCalendar(calendar: Calendar): Promise\<void>
299
300删除指定Calendar对象,使用Promise异步回调。
301
302**需要权限**: ohos.permission.WRITE_CALENDARohos.permission.WRITE_WHOLE_CALENDAR
303
304**系统能力**: SystemCapability.Applications.CalendarData
305
306**参数**:
307
308| 参数名   | 类型                  | 必填 | 说明           |
309| -------- | --------------------- | ---- | -------------- |
310| calendar | [Calendar](#calendar) | 是   | 即将删除的Calendar对象。 |
311
312**返回值**:
313
314| 类型           | 说明                      |
315| -------------- | ------------------------- |
316| Promise\<void> | 无返回结果的Promise对象。 |
317
318**错误码:**
319
320以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
321
322| 错误码ID | 错误信息                        |
323| -------- | ------------------------------ |
324| 201      | Permission denied.  |
325| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
326| 801      | Capability not supported.  |
327
328**示例**:
329
330```typescript
331import { BusinessError } from '@kit.BasicServicesKit';
332import { calendarMgr } from '../entryability/EntryAbility';
333
334const calendarAccount: calendarManager.CalendarAccount = {
335  name: 'DeleteMyCalendarByPromise',
336  type: calendarManager.CalendarType.LOCAL
337};
338calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
339  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
340  calendarMgr?.getCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
341    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
342    calendarMgr?.deleteCalendar(data).then(() => {
343      console.info("Succeeded in deleting calendar");
344    }).catch((err: BusinessError) => {
345      console.error(`Failed to delete calendar. Code: ${err.code}, message: ${err.message}`);
346    });
347  }).catch((err: BusinessError) => {
348    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
349  });
350}).catch((error: BusinessError) => {
351  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
352})
353```
354
355### getCalendar
356
357getCalendar(callback: AsyncCallback\<Calendar>): void
358
359获取默认Calendar对象,默认Calendar是日历存储首次运行时创建的,若创建Event时不关注其Calendar归属,则无须通过[createCalendar()](#createcalendar)创建Calendar,直接使用默认Calendar,使用callback异步回调。
360
361**需要权限**:ohos.permission.READ_CALENDARohos.permission.READ_WHOLE_CALENDAR
362
363**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
364
365**系统能力**: SystemCapability.Applications.CalendarData
366
367**参数**:
368
369| 参数名   | 类型                                 | 必填 | 说明                                 |
370| -------- | ------------------------------------ | ---- | ------------------------------------ |
371| callback | AsyncCallback<[Calendar](#calendar)> | 是   | 回调函数,返回查询到的Calendar对象。 |
372
373**错误码:**
374
375以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
376
377| 错误码ID | 错误信息                        |
378| -------- | ------------------------------ |
379| 201      | Permission denied.  |
380| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
381| 801      | Capability not supported.  |
382
383**示例**:
384
385```typescript
386import { BusinessError } from '@kit.BasicServicesKit';
387import { calendarMgr } from '../entryability/EntryAbility';
388
389let calendar : calendarManager.Calendar | undefined = undefined;
390calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
391  if (err) {
392    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
393  } else {
394    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
395    calendar = data;
396  }
397});
398```
399
400### getCalendar
401
402getCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void
403
404获取指定Calendar对象,使用callback异步回调。
405
406**需要权限**: ohos.permission.READ_CALENDARohos.permission.READ_WHOLE_CALENDAR
407
408**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
409
410**系统能力**: SystemCapability.Applications.CalendarData
411
412**参数**:
413
414| 参数名          | 类型                                 | 必填 | 说明                                 |
415| --------------- | ------------------------------------ | ---- | ------------------------------------ |
416| calendarAccount | [CalendarAccount](#calendaraccount)  | 是   | 日历账户信息。                       |
417| callback        | AsyncCallback<[Calendar](#calendar)> | 是   | 回调函数,返回查询到的Calendar对象。 |
418
419**错误码:**
420
421以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
422
423| 错误码ID | 错误信息                        |
424| -------- | ------------------------------ |
425| 201      | Permission denied.  |
426| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
427| 801      | Capability not supported.  |
428
429**示例**:
430
431```typescript
432import { BusinessError } from '@kit.BasicServicesKit';
433import { calendarMgr } from '../entryability/EntryAbility';
434
435let calendar : calendarManager.Calendar | undefined = undefined;
436const calendarAccount: calendarManager.CalendarAccount = {
437  name: 'MyCalendar',
438  type: calendarManager.CalendarType.LOCAL
439};
440calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
441  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
442  calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
443    if (err) {
444      console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
445    } else {
446      console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`);
447      calendar = data;
448    }
449  });
450}).catch((error: BusinessError) => {
451  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
452})
453```
454
455### getCalendar
456
457getCalendar(calendarAccount?: CalendarAccount): Promise\<Calendar>
458
459获取默认Calendar对象或者指定Calendar对象,使用Promise异步回调。
460
461**需要权限**: ohos.permission.READ_CALENDARohos.permission.READ_WHOLE_CALENDAR
462
463**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
464
465**系统能力**: SystemCapability.Applications.CalendarData
466
467**参数**:
468
469| 参数名          | 类型                                | 必填 | 说明                                                         |
470| --------------- | ----------------------------------- | ---- | ------------------------------------------------------------ |
471| calendarAccount | [CalendarAccount](#calendaraccount) | 否   | 日历账户信息,用来获取指定Calendar对象,不填时,表示获取默认Calendar对象。 |
472
473**返回值**:
474
475| 类型                           | 说明                                    |
476| ------------------------------ | --------------------------------------- |
477| Promise<[Calendar](#calendar)> | Promise对象,返回查询到的Calendar对象。 |
478
479**错误码:**
480
481以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
482
483| 错误码ID | 错误信息                        |
484| -------- | ------------------------------ |
485| 201      | Permission denied.  |
486| 401      | Parameter error. Possible causes: Incorrect parameter types.  |
487| 801      | Capability not supported.  |
488
489**示例**:
490
491```typescript
492import { BusinessError } from '@kit.BasicServicesKit';
493import { calendarMgr } from '../entryability/EntryAbility';
494
495let calendar : calendarManager.Calendar | undefined = undefined;
496calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => {
497  console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
498  calendar = data;
499}).catch((err: BusinessError) => {
500  console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
501});
502```
503
504### getAllCalendars
505
506getAllCalendars(callback: AsyncCallback\<Calendar[]>): void
507
508获取当前应用所有创建的Calendar对象以及默认Calendar对象,使用callback异步回调。
509
510**需要权限**:ohos.permission.READ_CALENDARohos.permission.READ_WHOLE_CALENDAR
511
512**系统能力**: SystemCapability.Applications.CalendarData
513
514**参数**:
515
516| 参数名   | 类型                                   | 必填 | 说明                                      |
517| -------- | -------------------------------------- | ---- | ----------------------------------------- |
518| callback | AsyncCallback<[Calendar](#calendar)[]> | 是   | 回调函数, 返回查询到的Calendar对象数组。 |
519
520**错误码:**
521
522以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
523
524| 错误码ID | 错误信息                        |
525| -------- | ------------------------------ |
526| 201      | Permission denied.  |
527| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
528| 801      | Capability not supported.  |
529
530**示例**:
531
532```typescript
533import { BusinessError } from '@kit.BasicServicesKit';
534import { calendarMgr } from '../entryability/EntryAbility';
535
536calendarMgr?.getAllCalendars((err: BusinessError, data: calendarManager.Calendar[]) => {
537  if (err) {
538    console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`);
539  } else {
540    console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`);
541    data.forEach((calendar) => {
542      const account = calendar.getAccount();
543      console.info(`account -> ${JSON.stringify(account)}`);
544    })
545  }
546});
547```
548
549### getAllCalendars
550
551getAllCalendars(): Promise\<Calendar[]>
552
553获取当前应用所有创建的Calendar对象以及默认Calendar对象,使用Promise异步回调。
554
555**需要权限**: ohos.permission.READ_CALENDARohos.permission.READ_WHOLE_CALENDAR
556
557**系统能力**: SystemCapability.Applications.CalendarData
558
559**返回值**:
560
561| 类型                             | 说明                                        |
562| -------------------------------- | ------------------------------------------- |
563| Promise<[Calendar](#calendar)[]> | Promise对象,返回查询到的Calendar对象数组。 |
564
565**错误码:**
566
567以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
568
569| 错误码ID | 错误信息                        |
570| -------- | ------------------------------ |
571| 201      | Permission denied.  |
572| 401      | Parameter error. Possible causes: Incorrect parameter types.  |
573| 801      | Capability not supported.  |
574
575**示例**:
576
577```typescript
578import { BusinessError } from '@kit.BasicServicesKit';
579import { calendarMgr } from '../entryability/EntryAbility';
580
581calendarMgr?.getAllCalendars().then((data: calendarManager.Calendar[]) => {
582  console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`);
583  data.forEach((calendar) => {
584    const account = calendar.getAccount();
585    console.info(`account -> ${JSON.stringify(account)}`);
586  })
587}).catch((err: BusinessError) => {
588  console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`);
589});
590```
591
592### editEvent<sup>12+</sup>
593
594editEvent(event: Event): Promise\<number>
595
596通过跳转到日程创建页面创建单个日程,入参Event不填日程id,使用Promise异步回调。使用该接口创建的日程,三方应用无法查询和修改,只能通过系统日历进行查询和修改。
597
598**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
599
600**系统能力**: SystemCapability.Applications.CalendarData
601
602**参数**:
603
604| 参数名 | 类型            | 必填 | 说明        |
605| ------ | --------------- | ---- | ----------- |
606| event  | [Event](#event) | 是   | Event对象。 |
607
608**返回值**:
609
610| 类型           | 说明                                                                          |
611| -------------- |-----------------------------------------------------------------------------|
612| Promise&lt;number&gt; | Promise对象,返回日程的id,日程id是日程的唯一标识符,是数据库的自增主键。创建失败时没有返回值;当返回值小于0时代表用户取消创建;当返回值大于0时代表日程创建成功;没有等于0的情况。 |
613
614**示例**:
615
616```typescript
617import { BusinessError } from '@kit.BasicServicesKit';
618import { calendarMgr } from '../entryability/EntryAbility';
619
620const date = new Date();
621const event: calendarManager.Event = {
622  title: 'title',
623  type: calendarManager.EventType.NORMAL,
624  startTime: date.getTime(),
625  endTime: date.getTime() + 60 * 60 * 1000
626};
627calendarMgr?.editEvent(event).then((eventId: number): void => {
628  console.info(`create Event id = ${eventId}`);
629}).catch((err: BusinessError) => {
630  console.error(`Failed to create Event. Code: ${err.code}, message: ${err.message}`);
631});
632```
633
634## Calendar
635
636下列API示例中需先通过[createCalendar()](#createcalendar)、[getCalendar()](#getcalendar)中任一方法获取Calendar对象,再通过此对象调用对应方法,对该Calendar下的日程进行创建、删除、修改、查询等操作。
637
638**系统能力**: SystemCapability.Applications.CalendarData
639
640### 属性
641
642**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
643
644**系统能力**:SystemCapability.Applications.CalendarData
645
646| 名称 | 类型   | 只读 | 可选 | 说明                                                                       |
647| ---- | ------ | ---- |----|--------------------------------------------------------------------------|
648| id   | number | 是   | 否  | 日历账户id,日历账户id是日历账户的唯一标识符,是数据库的自增主键,小于0代表日历账户创建失败,大于0代表日历账户创建成功,没有等于0的情况。 |
649
650### addEvent
651
652addEvent(event: Event, callback: AsyncCallback\<number>): void
653
654创建日程,入参Event不填日程id、instanceStartTime和instanceEndTime,使用callback异步回调。
655
656**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
657
658**系统能力**: SystemCapability.Applications.CalendarData
659
660**参数**:
661
662| 参数名   | 类型                   | 必填 | 说明                                                                    |
663| -------- | ---------------------- | ---- |-----------------------------------------------------------------------|
664| event    | [Event](#event)        | 是   | Event对象。                                                              |
665| callback | AsyncCallback\<number> | 是   | 回调函数,返回日程id,日程id是日程的唯一标识符,是数据库的自增主键,小于0代表日程创建失败,大于0代表日程创建成功,没有等于0的情况。 |
666
667**示例**:
668
669```typescript
670import { BusinessError } from '@kit.BasicServicesKit';
671import { calendarMgr } from '../entryability/EntryAbility';
672
673let calendar : calendarManager.Calendar | undefined = undefined;
674const date = new Date();
675const event: calendarManager.Event = {
676  type: calendarManager.EventType.NORMAL,
677  startTime: date.getTime(),
678  endTime: date.getTime() + 60 * 60 * 1000
679};
680calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => {
681  console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
682  calendar = data;
683  calendar.addEvent(event, (err: BusinessError, data: number): void => {
684    if (err) {
685      console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`);
686    } else {
687      console.info(`Succeeded in adding event, id -> ${data}`);
688    }
689  });
690}).catch((err: BusinessError) => {
691  console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
692});
693```
694
695### addEvent
696
697addEvent(event: Event): Promise\<number>
698
699创建日程,入参Event不填日程id、instanceStartTime和instanceEndTime,使用Promise异步回调。
700
701**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
702
703**系统能力**: SystemCapability.Applications.CalendarData
704
705**参数**:
706
707| 参数名 | 类型            | 必填 | 说明        |
708| ------ | --------------- | ---- | ----------- |
709| event  | [Event](#event) | 是   | Event对象。 |
710
711**返回值**:
712
713| 类型             | 说明                       |
714| ---------------- |--------------------------|
715| Promise\<number> | Promise对象,返回日程的id,id大于0。 |
716
717**示例**:
718
719```typescript
720import { BusinessError } from '@kit.BasicServicesKit';
721import { calendarMgr } from '../entryability/EntryAbility';
722
723let calendar : calendarManager.Calendar | undefined = undefined;
724const date = new Date();
725const event: calendarManager.Event = {
726  type: calendarManager.EventType.NORMAL,
727  startTime: date.getTime(),
728  endTime: date.getTime() + 60 * 60 * 1000
729};
730calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
731  if (err) {
732    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
733  } else {
734    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
735    calendar = data;
736    calendar.addEvent(event).then((data: number) => {
737      console.info(`Succeeded in adding event, id -> ${data}`);
738    }).catch((err: BusinessError) => {
739      console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`);
740    });
741  }
742});
743```
744
745### addEvents
746
747addEvents(events: Event[], callback: AsyncCallback\<void>): void
748
749批量创建日程,入参Event不填日程id、instanceStartTime和instanceEndTime,使用callback异步回调。
750
751**系统能力**: SystemCapability.Applications.CalendarData
752
753**参数**:
754
755| 参数名   | 类型                 | 必填 | 说明            |
756| -------- | -------------------- | ---- | --------------- |
757| events   | [Event](#event)[]    | 是   | Event对象数组。 |
758| callback | AsyncCallback\<void> | 是   | 回调函数。      |
759
760**示例**:
761
762```typescript
763import { BusinessError } from '@kit.BasicServicesKit';
764import { calendarMgr } from '../entryability/EntryAbility';
765
766let calendar : calendarManager.Calendar | undefined = undefined;
767const date = new Date();
768const events: calendarManager.Event[] = [
769  {
770    type: calendarManager.EventType.NORMAL,
771    startTime: date.getTime(),
772    endTime: date.getTime() + 60 * 60 * 1000
773  },
774  {
775    type: calendarManager.EventType.NORMAL,
776    startTime: date.getTime(),
777    endTime: date.getTime() + 60 * 60 * 1000
778  }
779];
780calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
781  if (err) {
782    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
783  } else {
784    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
785    calendar = data;
786    calendar.addEvents(events, (err: BusinessError) => {
787      if (err) {
788        console.error(`Failed to add events. Code: ${err.code}, message: ${err.message}`);
789      } else {
790        console.info("Succeeded in adding events");
791      }
792    });
793  }
794});
795```
796
797### addEvents
798
799addEvents(events: Event[]): Promise\<void>
800
801批量创建日程,入参Event不填日程id、instanceStartTime和instanceEndTime,使用Promise异步回调。
802
803**系统能力**: SystemCapability.Applications.CalendarData
804
805**参数**:
806
807| 参数名 | 类型              | 必填 | 说明            |
808| ------ | ----------------- | ---- | --------------- |
809| events | [Event](#event)[] | 是   | Event对象数组。 |
810
811**返回值**:
812
813| 类型           | 说明                      |
814| -------------- | ------------------------- |
815| Promise\<void> | 无返回结果的Promise对象。 |
816
817**示例**:
818
819```typescript
820import { BusinessError } from '@kit.BasicServicesKit';
821import { calendarMgr } from '../entryability/EntryAbility';
822
823let calendar : calendarManager.Calendar | undefined = undefined;
824const date = new Date();
825const events: calendarManager.Event[] = [
826  {
827    type: calendarManager.EventType.NORMAL,
828    startTime: date.getTime(),
829    endTime: date.getTime() + 60 * 60 * 1000
830  },
831  {
832    type: calendarManager.EventType.NORMAL,
833    startTime: date.getTime(),
834    endTime: date.getTime() + 60 * 60 * 1000
835  }
836];
837calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
838  if (err) {
839    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
840  } else {
841    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
842    calendar = data;
843    calendar.addEvents(events).then(() => {
844      console.info("Succeeded in adding events");
845    }).catch((err: BusinessError) => {
846      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
847    });
848  }
849});
850```
851
852### deleteEvent
853
854deleteEvent(id: number, callback: AsyncCallback\<void>): void
855
856删除指定id的日程,使用callback异步回调。
857
858**系统能力**: SystemCapability.Applications.CalendarData
859
860**参数**:
861
862| 参数名   | 类型                 | 必填 | 说明                                     |
863| -------- | -------------------- | ---- |----------------------------------------|
864| id       | number               | 是   | 日程id,传入的日程id为正整数,表示已创建日程的id,是日程的唯一标识符。 |
865| callback | AsyncCallback\<void> | 是   | 回调函数。                                  |
866
867**示例**:
868
869```typescript
870import { BusinessError } from '@kit.BasicServicesKit';
871import { calendarMgr } from '../entryability/EntryAbility';
872
873let calendar : calendarManager.Calendar | undefined = undefined;
874let id: number = 0;
875const date = new Date();
876const event: calendarManager.Event = {
877  type: calendarManager.EventType.NORMAL,
878  startTime: date.getTime(),
879  endTime: date.getTime() + 60 * 60 * 1000
880};
881calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
882  if (err) {
883    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
884  } else {
885    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
886    calendar = data;
887    calendar.addEvent(event).then((data: number) => {
888      console.info(`Succeeded in adding event, id -> ${data}`);
889      id = data;
890      calendar?.deleteEvent(id, (err: BusinessError) => {
891        if (err) {
892          console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`);
893        } else {
894          console.info(`Succeeded in deleting event`);
895        }
896      });
897    }).catch((err: BusinessError) => {
898      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
899    });
900  }
901});
902```
903
904### deleteEvent
905
906deleteEvent(id: number): Promise\<void>
907
908删除指定id的日程,使用Promise异步回调。
909
910**系统能力**: SystemCapability.Applications.CalendarData
911
912**参数**:
913
914| 参数名 | 类型   | 必填 | 说明     |
915| ------ | ------ | ---- | -------- |
916| id     | number | 是   | 日程id。 |
917
918**返回值**:
919
920| 类型           | 说明                      |
921| -------------- | ------------------------- |
922| Promise\<void> | 无返回结果的Promise对象。 |
923
924**示例**:
925
926```typescript
927import { BusinessError } from '@kit.BasicServicesKit';
928import { calendarMgr } from '../entryability/EntryAbility';
929
930let calendar : calendarManager.Calendar | undefined = undefined;
931let id: number = 0;
932const date = new Date();
933const event: calendarManager.Event = {
934  type: calendarManager.EventType.NORMAL,
935  startTime: date.getTime(),
936  endTime: date.getTime() + 60 * 60 * 1000
937};
938calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
939  if (err) {
940    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
941  } else {
942    console.info(`Succeeded in getting calendar data->${JSON.stringify(data)}`);
943    calendar = data;
944    await calendar.addEvent(event).then((data: number) => {
945      console.info(`Succeeded in adding event, id -> ${data}`);
946      id = data;
947    }).catch((err: BusinessError) => {
948      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
949    });
950    calendar.deleteEvent(id).then(() => {
951      console.info("Succeeded in deleting event");
952    }).catch((err: BusinessError) => {
953      console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`);
954    });
955  }
956});
957```
958
959### deleteEvents
960
961deleteEvents(ids: number[], callback: AsyncCallback\<void>): void
962
963根据日程id,批量删除日程,使用callback异步回调。
964
965**系统能力**: SystemCapability.Applications.CalendarData
966
967**参数**:
968
969| 参数名   | 类型                 | 必填 | 说明         |
970| -------- | -------------------- | ---- | ------------ |
971| ids      | number[]             | 是   | 日程id数组。 |
972| callback | AsyncCallback\<void> | 是   | 回调函数。   |
973
974**示例**:
975
976```typescript
977import { BusinessError } from '@kit.BasicServicesKit';
978import { calendarMgr } from '../entryability/EntryAbility';
979
980let calendar : calendarManager.Calendar | undefined = undefined;
981let id1: number = 0;
982let id2: number = 0;
983const date = new Date();
984const event1: calendarManager.Event = {
985  type: calendarManager.EventType.NORMAL,
986  startTime: date.getTime(),
987  endTime: date.getTime() + 60 * 60 * 1000
988};
989const event2: calendarManager.Event = {
990  type: calendarManager.EventType.IMPORTANT,
991  startTime: date.getTime(),
992  endTime: date.getTime() + 60 * 60 * 1000
993};
994calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
995  if (err) {
996    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
997  } else {
998    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
999    calendar = data;
1000    await calendar.addEvent(event1).then((data: number) => {
1001      console.info(`Succeeded in adding event, id -> ${data}`);
1002      id1 = data;
1003    }).catch((err: BusinessError) => {
1004      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1005    });
1006    await calendar.addEvent(event2).then((data: number) => {
1007      console.info(`Succeeded in adding event, id -> ${data}`);
1008      id2 = data;
1009    }).catch((err: BusinessError) => {
1010      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1011    });
1012    calendar.deleteEvents([id1, id2], (err: BusinessError) => {
1013      if (err) {
1014        console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`);
1015      } else {
1016        console.info("Succeeded in deleting events");
1017      }
1018    });
1019  }
1020});
1021```
1022
1023### deleteEvents
1024
1025deleteEvents(ids: number[]): Promise\<void>
1026
1027根据日程id,批量删除日程,使用Promise异步回调。
1028
1029**系统能力**: SystemCapability.Applications.CalendarData
1030
1031**参数**:
1032
1033| 参数名 | 类型     | 必填 | 说明         |
1034| ------ | -------- | ---- | ------------ |
1035| ids    | number[] | 是   | 日程id数组。 |
1036
1037**返回值**:
1038
1039| 类型           | 说明                      |
1040| -------------- | ------------------------- |
1041| Promise\<void> | 无返回结果的Promise对象。 |
1042
1043**示例**:
1044
1045```typescript
1046import { BusinessError } from '@kit.BasicServicesKit';
1047import { calendarMgr } from '../entryability/EntryAbility';
1048
1049let calendar : calendarManager.Calendar | undefined = undefined;
1050let id1: number = 0;
1051let id2: number = 0;
1052const date = new Date();
1053const event1: calendarManager.Event = {
1054  type: calendarManager.EventType.NORMAL,
1055  startTime: date.getTime(),
1056  endTime: date.getTime() + 60 * 60 * 1000
1057};
1058const event2: calendarManager.Event = {
1059  type: calendarManager.EventType.IMPORTANT,
1060  startTime: date.getTime(),
1061  endTime: date.getTime() + 60 * 60 * 1000
1062};
1063calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1064  if (err) {
1065    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1066  } else {
1067    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1068    calendar = data;
1069    await calendar.addEvent(event1).then((data: number) => {
1070      console.info(`Succeeded in adding event, id -> ${data}`);
1071      id1 = data;
1072    }).catch((err: BusinessError) => {
1073      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1074    });
1075    await calendar.addEvent(event2).then((data: number) => {
1076      console.info(`Succeeded in adding event, id -> ${data}`);
1077      id2 = data;
1078    }).catch((err: BusinessError) => {
1079      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1080    });
1081    calendar.deleteEvents([id1, id2]).then(() => {
1082      console.info("Succeeded in deleting events");
1083    }).catch((err: BusinessError) => {
1084      console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`);
1085    });
1086  }
1087});
1088```
1089
1090### updateEvent
1091
1092updateEvent(event: Event, callback: AsyncCallback\<void>): void
1093
1094更新日程,使用callback异步回调。
1095
1096**系统能力**: SystemCapability.Applications.CalendarData
1097
1098**参数**:
1099
1100| 参数名   | 类型                 | 必填 | 说明        |
1101| -------- | -------------------- | ---- | ----------- |
1102| event    | [Event](#event)      | 是   | Event对象。 |
1103| callback | AsyncCallback\<void> | 是   | 回调函数。  |
1104
1105**示例**:
1106
1107```typescript
1108import { BusinessError } from '@kit.BasicServicesKit';
1109import { calendarMgr } from '../entryability/EntryAbility';
1110
1111let calendar : calendarManager.Calendar | undefined = undefined;
1112const date = new Date();
1113const oriEvent: calendarManager.Event = {
1114  title: 'update',
1115  type: calendarManager.EventType.NORMAL,
1116  description: 'updateEventTest',
1117  startTime: date.getTime(),
1118  endTime: date.getTime() + 60 * 60 * 1000
1119};
1120calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1121  if (err) {
1122    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1123  } else {
1124    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1125    calendar = data;
1126    await calendar.addEvent(oriEvent).then((data: number) => {
1127      console.info(`Succeeded in adding event, id -> ${data}`);
1128      oriEvent.id = data;
1129      oriEvent.title = 'newUpdate';
1130    }).catch((err: BusinessError) => {
1131      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1132    });
1133    calendar.updateEvent(oriEvent, (err: BusinessError) => {
1134      if (err) {
1135        console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`);
1136      } else {
1137        console.info("Succeeded in updating event");
1138      }
1139    });
1140  }
1141});
1142```
1143
1144### updateEvent
1145
1146updateEvent(event: Event): Promise\<void>
1147
1148更新日程,使用Promise异步回调。
1149
1150**系统能力**: SystemCapability.Applications.CalendarData
1151
1152**参数**:
1153
1154| 参数名 | 类型            | 必填 | 说明        |
1155| ------ | --------------- | ---- | ----------- |
1156| event  | [Event](#event) | 是   | Event对象。 |
1157
1158**返回值**:
1159
1160| 类型           | 说明                      |
1161| -------------- | ------------------------- |
1162| Promise\<void> | 无返回结果的Promise对象。 |
1163
1164**示例**:
1165
1166```typescript
1167import { BusinessError } from '@kit.BasicServicesKit';
1168import { calendarMgr } from '../entryability/EntryAbility';
1169
1170let calendar : calendarManager.Calendar | undefined = undefined;
1171const date = new Date();
1172const oriEvent: calendarManager.Event = {
1173  title: 'update',
1174  type: calendarManager.EventType.NORMAL,
1175  description: 'updateEventTest',
1176  startTime: date.getTime(),
1177  endTime: date.getTime() + 60 * 60 * 1000
1178};
1179calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1180  if (err) {
1181    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1182  } else {
1183    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1184    calendar = data;
1185    await calendar.addEvent(oriEvent).then((data: number) => {
1186      console.info(`Succeeded in adding event, id -> ${data}`);
1187      oriEvent.id = data;
1188      oriEvent.title = 'newUpdate';
1189    }).catch((err: BusinessError) => {
1190      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1191    });
1192    calendar.updateEvent(oriEvent).then(() => {
1193      console.info(`Succeeded in updating event`);
1194    }).catch((err: BusinessError) => {
1195      console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`);
1196    });
1197  }
1198});
1199```
1200
1201### getEvents
1202
1203getEvents(callback: AsyncCallback\<Event[]>): void
1204
1205查询当前日历下所有日程,使用callback异步回调。
1206
1207**系统能力**: SystemCapability.Applications.CalendarData
1208
1209**参数**:
1210
1211| 参数名   | 类型                             | 必填 | 说明                              |
1212| -------- | -------------------------------- | ---- | --------------------------------- |
1213| callback | AsyncCallback<[Event](#event)[]> | 是   | 回调函数,返回的是Event对象数组。 |
1214
1215**示例**:
1216
1217```typescript
1218import { BusinessError } from '@kit.BasicServicesKit';
1219import { calendarMgr } from '../entryability/EntryAbility';
1220
1221let calendar : calendarManager.Calendar | undefined = undefined;
1222calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1223  if (err) {
1224    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1225  } else {
1226    console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`);
1227    calendar = data;
1228    calendar.getEvents((err: BusinessError, data: calendarManager.Event[]) => {
1229      if (err) {
1230        console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1231      } else {
1232        console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1233      }
1234    });
1235  }
1236});
1237```
1238
1239### getEvents
1240
1241getEvents(eventFilter: EventFilter, eventKey: (keyof Event)[], callback: AsyncCallback\<Event[]>):void
1242
1243获取Calendar下符合查询条件的Event,使用callback异步回调。
1244
1245**系统能力**: SystemCapability.Applications.CalendarData
1246
1247**参数**:
1248
1249| 参数名      | 类型                             | 必填 | 说明                              |
1250| ----------- | -------------------------------- | ---- | --------------------------------- |
1251| eventFilter | [EventFilter](#eventfilter)      | 是   | 查询条件。                        |
1252| eventKey    | (keyof [Event](#event))[]        | 是   | 查询字段。                        |
1253| callback    | AsyncCallback<[Event](#event)[]> | 是   | 回调函数,返回的是Event对象数组。 |
1254
1255**示例**:
1256
1257```typescript
1258import { BusinessError } from '@kit.BasicServicesKit';
1259import { calendarMgr } from '../entryability/EntryAbility';
1260
1261let calendar : calendarManager.Calendar | undefined = undefined;
1262let id1: number = 0;
1263let id2: number = 0;
1264const date = new Date();
1265const event1: calendarManager.Event = {
1266  type: calendarManager.EventType.NORMAL,
1267  startTime: date.getTime(),
1268  endTime: date.getTime() + 60 * 60 * 1000
1269};
1270const event2: calendarManager.Event = {
1271  type: calendarManager.EventType.IMPORTANT,
1272  startTime: date.getTime(),
1273  endTime: date.getTime() + 60 * 60 * 1000
1274};
1275calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1276  if (err) {
1277    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1278  } else {
1279    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1280    calendar = data;
1281    await calendar.addEvent(event1).then((data: number) => {
1282      console.info(`Succeeded in adding event, id -> ${data}`);
1283    }).catch((err: BusinessError) => {
1284      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1285    });
1286    await calendar.addEvent(event2).then((data: number) => {
1287      console.info(`Succeeded in adding event, id -> ${data}`);
1288    }).catch((err: BusinessError) => {
1289      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1290    });
1291    const filter = calendarManager.EventFilter.filterById([id1, id2]);
1292    calendar.getEvents(filter, ['title', 'type', 'startTime', 'endTime'], (err: BusinessError, data: calendarManager.Event[]) => {
1293      if (err) {
1294        console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1295      } else {
1296        console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1297      }
1298    });
1299  }
1300});
1301```
1302
1303### getEvents
1304
1305getEvents(eventFilter?: EventFilter, eventKey?: (keyof Event)[]): Promise\<Event[]>
1306
1307获取Calendar下符合查询条件的Event,使用Promise异步回调。
1308只有一个入参时,参数必须为查询条件,对应参数类型为EventFilter。
1309当没有入参时,可查询指定日历账户下的所有日程。
1310
1311**系统能力**: SystemCapability.Applications.CalendarData
1312
1313**参数**:
1314
1315| 参数名      | 类型                        | 必填 | 说明       |
1316| ----------- | --------------------------- | ---- | ---------- |
1317| eventFilter | [EventFilter](#eventfilter) | 否   | 查询条件。 |
1318| eventKey    | (keyof [Event](#event))[]   | 否   | 查询字段。 |
1319
1320**返回值**:
1321
1322| 类型                       | 说明                                |
1323| -------------------------- | ----------------------------------- |
1324| Promise<[Event](#event)[]> | Promise对象,返回的是Event对象数组。 |
1325
1326**示例**:
1327
1328```typescript
1329import { BusinessError } from '@kit.BasicServicesKit';
1330import { calendarMgr } from '../entryability/EntryAbility';
1331
1332let calendar : calendarManager.Calendar | undefined = undefined;
1333const date = new Date();
1334const event: calendarManager.Event = {
1335  title: 'MyEvent',
1336  type: calendarManager.EventType.IMPORTANT,
1337  startTime: date.getTime(),
1338  endTime: date.getTime() + 60 * 60 * 1000
1339};
1340calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1341  if (err) {
1342    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1343  } else {
1344    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1345    calendar = data;
1346    await calendar.addEvent(event).then((data: number) => {
1347      console.info(`Succeeded in adding event, id -> ${data}`);
1348    }).catch((err: BusinessError) => {
1349      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1350    });
1351    // 根据MyEvent进行模糊查询,如果存在类似标题为MyEvent1类型的日程,也可查询出来
1352    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
1353    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1354      console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1355    }).catch((err: BusinessError) => {
1356      console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1357    });
1358  }
1359});
1360```
1361
1362### getConfig
1363
1364getConfig(): CalendarConfig
1365
1366获取日历配置信息。
1367
1368**系统能力**: SystemCapability.Applications.CalendarData
1369
1370**返回值**:
1371
1372| 类型                              | 说明           |
1373| --------------------------------- | -------------- |
1374| [CalendarConfig](#calendarconfig) | 日历配置信息。 |
1375
1376**示例**:
1377
1378```typescript
1379import { calendarMgr } from '../entryability/EntryAbility';
1380import { BusinessError } from '@kit.BasicServicesKit';
1381
1382let calendar : calendarManager.Calendar | undefined = undefined;
1383calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1384  if (err) {
1385    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1386  } else {
1387    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1388    calendar = data;
1389    const config = calendar.getConfig();
1390    console.info(`Succeeded in getting config, config -> ${JSON.stringify(config)}`);
1391  }
1392});
1393```
1394
1395### setConfig
1396
1397setConfig(config: CalendarConfig, callback: AsyncCallback\<void>): void
1398
1399设置日历配置信息,使用callback异步回调。
1400
1401**系统能力**: SystemCapability.Applications.CalendarData
1402
1403**参数**:
1404
1405| 参数名   | 类型                              | 必填 | 说明           |
1406| -------- | --------------------------------- | ---- | -------------- |
1407| config   | [CalendarConfig](#calendarconfig) | 是   | 日历配置信息。 |
1408| callback | AsyncCallback\<void>              | 是   | 回调函数。     |
1409
1410**示例**:
1411
1412```typescript
1413import { BusinessError } from '@kit.BasicServicesKit';
1414import { calendarMgr } from '../entryability/EntryAbility';
1415
1416let calendar : calendarManager.Calendar | undefined = undefined;
1417const config: calendarManager.CalendarConfig = {
1418  enableReminder: true,
1419  color: '#aabbcc'
1420};
1421calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1422  if (err) {
1423    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1424  } else {
1425    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1426    calendar = data;
1427    calendar.setConfig(config, (err: BusinessError) => {
1428      if (err) {
1429        console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
1430      } else {
1431        console.info(`Succeeded in setting config, config -> ${JSON.stringify(config)}`);
1432      }
1433    });
1434  }
1435});
1436```
1437
1438### setConfig
1439
1440setConfig(config: CalendarConfig): Promise\<void>
1441
1442设置日历配置信息,使用Promise异步回调。
1443
1444**系统能力**: SystemCapability.Applications.CalendarData
1445
1446**参数**:
1447
1448| 参数名 | 类型                              | 必填 | 说明           |
1449| ------ | --------------------------------- | ---- | -------------- |
1450| config | [CalendarConfig](#calendarconfig) | 是   | 日历配置信息。 |
1451
1452**返回值**:
1453
1454| 类型           | 说明                      |
1455| -------------- | ------------------------- |
1456| Promise\<void> | 无返回结果的Promise对象。 |
1457
1458**示例**:
1459
1460```typescript
1461import { BusinessError } from '@kit.BasicServicesKit';
1462import { calendarMgr } from '../entryability/EntryAbility';
1463
1464let calendar : calendarManager.Calendar | undefined = undefined;
1465const config: calendarManager.CalendarConfig = {
1466  enableReminder: true,
1467  color: '#aabbcc'
1468};
1469calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1470  if (err) {
1471    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1472  } else {
1473    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1474    calendar = data;
1475    calendar.setConfig(config).then(() => {
1476      console.info(`Succeeded in setting config, data->${JSON.stringify(config)}`);
1477    }).catch((err: BusinessError) => {
1478      console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
1479    });
1480  }
1481});
1482```
1483
1484### getAccount
1485
1486getAccount(): CalendarAccount
1487
1488获取日历账户信息。
1489
1490**系统能力**: SystemCapability.Applications.CalendarData
1491
1492**返回值**:
1493
1494| 类型                                | 说明           |
1495| ----------------------------------- | -------------- |
1496| [CalendarAccount](#calendaraccount) | 日历账户信息。 |
1497
1498**示例**:
1499
1500```typescript
1501import { calendarMgr } from '../entryability/EntryAbility';
1502import { BusinessError } from '@kit.BasicServicesKit';
1503
1504let calendar : calendarManager.Calendar | undefined = undefined;
1505calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1506  if (err) {
1507    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1508  } else {
1509    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1510    calendar = data;
1511    const account = calendar.getAccount();
1512    console.info(`succeeded in getting account, account -> ${JSON.stringify(account)}`);
1513  }
1514});
1515```
1516
1517### queryEventInstances<sup>18+</sup>
1518
1519queryEventInstances(start: number, end: number, ids?: number[], eventKey?: (keyof Event)[]): Promise\<Event[]>
1520
1521获取Calendar下符合查询条件的日程实例,使用Promise异步回调。
1522
1523**系统能力**: SystemCapability.Applications.CalendarData
1524
1525**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
1526
1527**参数**:
1528
1529| 参数名      | 类型                        | 必填   | 说明         |
1530| ----------- | --------------------------- |------|------------|
1531| start  | number | 是    | 日程开始时间,类型为13位时间戳。    |
1532| end    | number | 是    | 日程结束时间,类型为13位时间戳。    |
1533| ids    | number[] | 否    | 需要查询的日程id数组,可为空数组或undefined,id>0。    |
1534| eventKey    | (keyof [Event](#event))[]   | 否    | 所有查询日程的字段。 |
1535
1536**返回值**:
1537
1538| 类型                       | 说明                                |
1539| -------------------------- | ----------------------------------- |
1540| Promise<[Event](#event)[]> | Promise对象,返回的是Event对象数组。 |
1541
1542**示例**:
1543
1544```typescript
1545import { BusinessError } from '@kit.BasicServicesKit';
1546import { calendarMgr } from '../entryability/EntryAbility';
1547
1548let calendar : calendarManager.Calendar | undefined = undefined;
1549const date = new Date();
1550const event: calendarManager.Event = {
1551  title: 'MyEvent',
1552  type: calendarManager.EventType.IMPORTANT,
1553  startTime: date.getTime(),
1554  endTime: date.getTime() + 60 * 60 * 1000
1555};
1556calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1557  if (err) {
1558    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1559  } else {
1560    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1561    calendar = data;
1562    await calendar.addEvent(event).then((data: number) => {
1563      console.info(`Succeeded in adding event, id -> ${data}`);
1564    }).catch((err: BusinessError) => {
1565      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1566    });
1567    calendar?.queryEventInstances(date.getTime(), date.getTime() + 60 * 60 * 1000, undefined,
1568      ["title", "startTime", "endTime", "instanceStartTime", "instanceEndTime",]).then((data: calendarManager.Event[]) => {
1569      console.info(`Succeeded in getting event instances, data -> ${JSON.stringify(data)}`);
1570    }).catch((err: BusinessError) => {
1571      console.error(`Failed to get event instances. Code: ${err.code}, message: ${err.message}`);
1572    });
1573  }
1574});
1575```
1576
1577## CalendarAccount
1578
1579日历账户信息。
1580
1581**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1582
1583**系统能力**:SystemCapability.Applications.CalendarData
1584
1585| 名称        | 类型                          | 只读 | 可选 | 说明                                           |
1586| ----------- | ----------------------------- | ---- |----|----------------------------------------------|
1587| name        | string                        | 是   | 否  | 账户名称(面向开发者),长度限制为0~5000字符。                   |
1588| type        | [CalendarType](#calendartype) | 否   | 否  | 账户类型。                                        |
1589| displayName | string                        | 否   | 是  | 账户显示在日历应用上的名称(面向用户)。不填时,默认为空字符串,长度限制为0~64字符。 |
1590
1591## CalendarConfig
1592
1593日历配置信息。
1594
1595**系统能力**:SystemCapability.Applications.CalendarData
1596
1597| 名称           | 类型     | 只读    | 可选 | 说明                                                         |
1598| -------------- |--------|-------|----| ------------------------------------------------------------ |
1599| enableReminder | boolean | 否     | 是  | 是否打开Calendar下所有Event提醒能力。当取值为true时,该Calendar下所有Event具备提醒能力;当取值为false时,不具备提醒能力,默认具备提醒能力。 |
1600| color          | number \| string | 否   | 是  | 设置Calendar颜色。值为number时取值范围为0x000000至0xFFFFFF或0x00000000至0xFFFFFFFF,值为string时长度为7或9,如'#FFFFFF','#FFFFFFFFF'。不填时或输入错误数据时,默认值为'#0A59F7'。 |
1601
1602## Event
1603
1604日程对象,包含日程标题、开始时间、结束时间等信息。
1605
1606**系统能力**:SystemCapability.Applications.CalendarData
1607
1608| 名称           | 类型                              | 只读 | 可选 | 说明                                                                                                                                                                                                                                       |
1609| -------------- | --------------------------------- | ---- |----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1610| id             | number                            | 否   | 是  | 日程id。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数;当调用[deleteEvent()](#deleteevent)、[deleteEvents()](#deleteevents)删除日程时,日程id数组,日程id需为正整数,传入其他非法入参会报错。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。          |
1611| type           | [EventType](#eventtype)           | 否   | 否  | 日程类型。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                             |
1612| title          | string                            | 否   | 是  | 日程标题。长度限制为0~5000字符,不填时,默认为空字符串。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                   |
1613| location       | [Location](#location)             | 否   | 是  | 日程地点。不填时,默认为null。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                 |
1614| startTime      | number                            | 否   | 否  | 日程开始时间,需要13位时间戳。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                    |
1615| endTime        | number                            | 否   | 否  | 日程结束时间,需要13位时间戳。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                   |
1616| isAllDay       | boolean                           | 否   | 是  | 是否为全天日程。当取值为true时,说明为全天日程;当取值为false时,说明不是全天日程,默认为非全天日程。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                            |
1617| attendee       | [Attendee](#attendee)[]           | 否   | 是  | 会议日程参与者。不填时,默认为null。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                               |
1618| timeZone       | string                            | 否   | 是  | 日程时区。长度限制为0~5000字符,不填或异常值时,默认为当前所在时区,当需要创建与当前不一样的时区时,可填入对应的时区。可通过[systemDateTime.getTimezone()](../apis-basic-services-kit/js-apis-date-time.md#systemdatetimegettimezone)获取当前系统时区。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
1619| reminderTime   | number[]                          | 否   | 是  | 日程提醒时间,单位为分钟。填写x分钟,即距开始时间提前x分钟提醒,不填时,默认为不提醒。为负值时表示延期多长时间提醒。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                         |
1620| recurrenceRule | [RecurrenceRule](#recurrencerule) | 否   | 是  | 日程重复规则。不填时,默认为不重复。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                |
1621| description    | string                            | 否   | 是  | 日程描述。长度限制为0~5000字符,不填时,默认为空字符串。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                    |
1622| service        | [EventService](#eventservice)     | 否   | 是  | <!--RP1-->日程服务。不填时,默认没有一键服务。暂不支持此功能。<!--RP1End-->   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                 |
1623| identifier<sup>12+</sup>     | string                            | 否   | 是  | 写入方可指定日程唯一标识。长度限制为0~5000字符,不填时,默认为null。  <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                            |
1624| isLunar<sup>12+</sup>     | boolean                            | 否   | 是  | 是否为农历日程。当取值为true时,说明为农历日程;当取值为false时,说明不是农历日程,默认为非农历日程。  <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                            |
1625| instanceStartTime<sup>18+</sup> | number                            | 否   | 是  | 日程实例开始时间,需要13位时间戳。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                                                                                 |
1626| instanceEndTime<sup>18+</sup>   | number                            | 否   | 是  | 日程实例结束时间,需要13位时间戳。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数。  <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。                                                                                                |
1627
1628## CalendarType
1629
1630账户类型枚举。
1631
1632**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1633
1634**系统能力**:SystemCapability.Applications.CalendarData
1635
1636| 名称       | 值           | 说明                 |
1637| ---------- | ------------ | -------------------- |
1638| LOCAL      | 'local'      | 本地账户。           |
1639| EMAIL      | 'email'      | 邮箱账户。           |
1640| BIRTHDAY   | 'birthday'   | 生日账户。           |
1641| CALDAV     | 'caldav'     | 支持CalDAV协议账户。 |
1642| SUBSCRIBED | 'subscribed' | 订阅账户。           |
1643
1644## Location
1645
1646日程地点。
1647
1648**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1649
1650**系统能力**:SystemCapability.Applications.CalendarData
1651
1652| 名称      | 类型   | 只读 | 可选 | 说明                     |
1653| --------- | ------ | ---- |----| ------------------------ |
1654| location  | string | 否   | 是  | 地点位置。长度限制为0~5000字符,不填时,默认为空字符串。 |
1655| longitude | number | 否   | 是  | 地点经度。取值范围[-180, 180],默认为0。    |
1656| latitude  | number | 否   | 是  | 地点纬度。取值范围[-90, 90],默认为0。    |
1657
1658## EventFilter
1659
1660日程过滤器,查询日程时进行筛选过滤,获取符合条件的日程。
1661
1662通过[filterById()](#filterbyid)、[filterByTime()](#filterbytime)、[filterByTitle()](#filterbytitle)任一方法获取日程过滤器,传入[getEvents()](#getevents)过滤。
1663
1664**系统能力**: SystemCapability.Applications.CalendarData
1665
1666### filterById
1667
1668static filterById(ids: number[]): EventFilter
1669
1670根据日程id过滤日程。
1671
1672**系统能力**: SystemCapability.Applications.CalendarData
1673
1674**参数**:
1675
1676| 参数名 | 类型     | 必填 | 说明         |
1677| ------ | -------- | ---- | ------------ |
1678| ids    | number[] | 是   | 日程id数组,日程id需为正整数。 |
1679
1680**返回值**:
1681
1682| 类型                        | 说明                 |
1683| --------------------------- | -------------------- |
1684| [EventFilter](#eventfilter) | 返回日程过滤器对象。 |
1685
1686**示例**:
1687
1688```typescript
1689import { BusinessError } from '@kit.BasicServicesKit';
1690import { calendarMgr } from '../entryability/EntryAbility';
1691
1692let calendar : calendarManager.Calendar | undefined = undefined;
1693let id1: number = 0;
1694let id2: number = 0;
1695const date = new Date();
1696const event1: calendarManager.Event = {
1697  type: calendarManager.EventType.NORMAL,
1698  startTime: date.getTime(),
1699  endTime: date.getTime() + 60 * 60 * 1000
1700};
1701const event2: calendarManager.Event = {
1702  type: calendarManager.EventType.IMPORTANT,
1703  startTime: date.getTime(),
1704  endTime: date.getTime() + 60 * 60 * 1000
1705};
1706calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1707  if (err) {
1708    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1709  } else {
1710    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1711    calendar = data;
1712    await calendar.addEvent(event1).then((data: number) => {
1713      console.info(`Succeeded in adding event, id -> ${data}`);
1714      id1 = data;
1715    }).catch((err: BusinessError) => {
1716      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1717    });
1718    await calendar.addEvent(event2).then((data: number) => {
1719      console.info(`Succeeded in adding event, id -> ${data}`);
1720      id2 = data;
1721    }).catch((err: BusinessError) => {
1722      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1723    });
1724    const filter = calendarManager.EventFilter.filterById([id1, id2]);
1725    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1726      console.info(`Succeeded in getting events filter by id, data -> ${JSON.stringify(data)}`);
1727    }).catch((err: BusinessError) => {
1728      console.error(`Failed to filter by id. Code: ${err.code}, message: ${err.message}`);
1729    });
1730  }
1731});
1732```
1733
1734### filterByTime
1735
1736static filterByTime(start: number, end: number): EventFilter
1737
1738根据日程时间过滤日程。
1739
1740**系统能力**: SystemCapability.Applications.CalendarData
1741
1742**参数**:
1743
1744| 参数名 | 类型   | 必填 | 说明       |
1745| ------ | ------ | ---- | ---------- |
1746| start  | number | 是   | 开始时间。格式为13位时间戳。 |
1747| end    | number | 是   | 结束时间。格式为13位时间戳。 |
1748
1749**返回值**:
1750
1751| 类型                        | 说明                 |
1752| --------------------------- | -------------------- |
1753| [EventFilter](#eventfilter) | 返回日程过滤器对象。 |
1754
1755**示例**:
1756
1757```typescript
1758import { BusinessError } from '@kit.BasicServicesKit';
1759import { calendarMgr } from '../entryability/EntryAbility';
1760
1761let calendar : calendarManager.Calendar | undefined = undefined;
1762const event1: calendarManager.Event = {
1763  type: calendarManager.EventType.NORMAL,
1764  startTime: 1686931200000,
1765  endTime: 1687017600000
1766};
1767const event2: calendarManager.Event = {
1768  type: calendarManager.EventType.IMPORTANT,
1769  startTime: 1686931200000,
1770  endTime: 1687017600000
1771};
1772calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1773  if (err) {
1774    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1775  } else {
1776    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1777    calendar = data;
1778    await calendar.addEvent(event1).then((data: number) => {
1779      console.info(`Succeeded in adding event, id -> ${data}`);
1780    }).catch((err: BusinessError) => {
1781      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1782    });
1783    await calendar.addEvent(event2).then((data: number) => {
1784      console.info(`Succeeded in adding event, id -> ${data}`);
1785    }).catch((err: BusinessError) => {
1786      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1787    });
1788    const filter = calendarManager.EventFilter.filterByTime(1686931200000, 1687017600000);
1789    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1790      console.info(`Succeeded in getting events filter by time, data -> ${JSON.stringify(data)}`);
1791    }).catch((err: BusinessError) => {
1792      console.error(`Failed to filter by time. Code: ${err.code}, message: ${err.message}`);
1793    });
1794  }
1795});
1796```
1797
1798### filterByTitle
1799
1800static filterByTitle(title: string): EventFilter
1801
1802根据日程标题过滤日程,该条件为模糊匹配。
1803
1804**系统能力**: SystemCapability.Applications.CalendarData
1805
1806**参数**:
1807
1808| 参数名 | 类型   | 必填 | 说明       |
1809| ------ | ------ | ---- | ---------- |
1810| title  | string | 是   | 日程标题。长度限制为0~5000字符。 |
1811
1812**返回值**:
1813
1814| 类型                        | 说明                 |
1815| --------------------------- | -------------------- |
1816| [EventFilter](#eventfilter) | 返回日程过滤器对象。 |
1817
1818**示例**:
1819
1820```typescript
1821import { BusinessError } from '@kit.BasicServicesKit';
1822import { calendarMgr } from '../entryability/EntryAbility';
1823
1824let calendar : calendarManager.Calendar | undefined = undefined;
1825const event: calendarManager.Event = {
1826  title: 'MyEvent',
1827  type: calendarManager.EventType.NORMAL,
1828  startTime: 1686931200000,
1829  endTime: 1687017600000
1830};
1831calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1832  if (err) {
1833    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1834  } else {
1835    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1836    calendar = data;
1837    await calendar.addEvent(event).then((data: number) => {
1838      console.info(`Succeeded in adding event, id -> ${data}`);
1839    }).catch((err: BusinessError) => {
1840      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1841    });
1842    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
1843    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1844      console.info(`Succeeded in getting events filter by title, data -> ${JSON.stringify(data)}`);
1845    }).catch((err: BusinessError) => {
1846      console.error(`Failed to filter by title. Code: ${err.code}, message: ${err.message}`);
1847    });
1848  }
1849});
1850```
1851
1852## EventType
1853
1854日程类型枚举。
1855
1856**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1857
1858**系统能力**:SystemCapability.Applications.CalendarData
1859
1860| 名称      | 值   | 说明                      |
1861| --------- | ---- |-------------------------|
1862| NORMAL    | 0    | 普通日程,例如会议,闹钟等日常提醒的日程。   |
1863| IMPORTANT | 1    | 重要日程,例如结婚纪念日等具有重要意义的日期,不推荐三方开发者使用,重要日程类型不支持一键服务跳转功能及无法自定义提醒时间。 |
1864
1865## RecurrenceRule
1866
1867日程重复规则。
1868
1869**系统能力**:SystemCapability.Applications.CalendarData
1870
1871| 名称                | 类型                                        | 只读 | 可选 | 说明                                                                                                                                                                                                                                                                                                                              |
1872| ------------------- | ------------------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1873| recurrenceFrequency | [RecurrenceFrequency](#recurrencefrequency) | 否   | 否  | 日程重复规则类型。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                                                                                 |
1874| expire              | number                                      | 否   | 是  | 重复周期截止日。格式为13位时间戳,不填时则日程无截止日期。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                                                           |
1875| count<sup>12+</sup>               | number                                      | 否   | 是  | 重复日程的重复次数,取值为非负整数,不填时默认为0,表示不会限定重复次数,会一直重复,取值为负时,效果等同于取值为0。当count与expire同时存在时以count为准。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                     |
1876| interval<sup>12+</sup>            | number                                      | 否   | 是  | 重复日程的重复间隔,取值为非负整数,不填时默认为0,表示日程按照重复规则一直重复,没有间隔。取值为负时,效果等同于取值为0。当interval与expire同时存在时以expire为准。 <br/>此属性与recurrenceFrequency重复规则相关,不同的重复规则下,表示的重复间隔不同,以interval取2为例,分为以下几种情况:<br/>每天重复时:表示日程每隔两天重复一次。<br/>每周重复时:表示日程每隔两周重复一次。<br/>每月重复时:表示日程每隔两月重复一次。<br/>每年重复时:表示日程每隔两年重复一次。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
1877| excludedDates<sup>12+</sup>       | number[]                                    | 否   | 是  | 重复日程的排除日期,参数取值为时间戳格式,不填时,默认为空,表示没有排除的日期,0或负数为无效值,与空值效果相同。  <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                                 |
1878| daysOfWeek<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一周第几天重复。不填时,默认为空,表示没有一周第几天重复的规则。范围为1到7,对应周一到周日,其他值为无效值,与空值效果相同。  <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                         |
1879| daysOfMonth<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一个月第几天重复。不填时,默认为空,表示没有一个月第几天重复的规则。范围为1到31,1到31对应1到31号,其他值为无效值,与空值效果相同。若当月没有29号、30号或31号,则29、30、31也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                   |
1880| daysOfYear<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一年第几天重复。不填时,默认为空,表示没有一年第几天重复的规则。范围为1到366,1到366表示一年的1到366天,其他值为无效值,与空值效果相同。若当年没有366天,366也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                            |
1881| weeksOfMonth<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一个月第几周重复。不填时,默认为空,表示没有一个月第几周重复的规则。范围为1到5,1到5为每月的第1到第5周,其他值为无效值,与空值效果相同。若当月没有第五周,5也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                  |
1882| weeksOfYear<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一年中第几周重复。不填时,默认为空,表示没有一年第几周重复的规则。范围为1到53,1到53为每年的第1到第53周,其他值为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                |
1883| monthsOfYear<sup>12+</sup>       | number[]                                    | 否   | 是  | 按照一年中第几个月重复。不填时,默认为空,表示没有一年第几个月重复的规则。范围为1到12,1到12为每年的1到12月,其他值为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                                                                                                                |
1884## RecurrenceFrequency
1885
1886日程重复规则类型枚举。
1887
1888**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1889
1890**系统能力**:SystemCapability.Applications.CalendarData
1891
1892| 名称    | 值   | 说明       |
1893| ------- | ---- | ---------- |
1894| YEARLY  | 0    | 每年重复。 |
1895| MONTHLY | 1    | 每月重复。 |
1896| WEEKLY  | 2    | 每周重复。 |
1897| DAILY   | 3    | 每天重复。 |
1898
1899## Attendee
1900
1901会议日程参与者。
1902
1903**系统能力**:SystemCapability.Applications.CalendarData
1904
1905| 名称  | 类型   | 只读 | 可选 | 说明                                                                 |
1906| ----- | ------ | ---- |----|--------------------------------------------------------------------|
1907| name  | string | 否   | 否  | 会议日程参与者的姓名。长度限制为0~5000字符。  <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。  |
1908| email | string | 否   | 否  | 会议日程参与者的邮箱。长度限制为0~5000字符。   <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
1909| role<sup>12+</sup>  | [AttendeeRole](#attendeerole12) | 否   | 是  | 会议日程参与者的角色。  <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。  |
1910| status<sup>18+</sup> | [AttendeeStatus](#attendeestatus18) | 否   | 是 | 会议日程参与者的状态,不填时默认为空。   <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
1911| type<sup>18+</sup>   | [AttendeeType](#attendeetype18)     | 否   | 是 | 会议日程参与者的类型,不填时默认为空。   <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
1912
1913## EventService
1914
1915日程服务。
1916
1917**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1918
1919**系统能力**:SystemCapability.Applications.CalendarData
1920
1921| 名称        | 类型                        | 只读 | 可选 | 说明                                  |
1922| ----------- | --------------------------- | ---- |----|-------------------------------------|
1923| type        | [ServiceType](#servicetype) | 否   | 否  | 服务类型。                               |
1924| uri         | string                      | 否   | 否  | 服务的uri,格式为DeepLink类型。可以跳转到三方应用相应界面。长度限制为0~5000字符。 |
1925| description | string                      | 否   | 是  | 服务辅助描述。长度限制为0~5000字符,不填时,默认为空字符串。                 |
1926
1927## ServiceType
1928
1929日程服务类型枚举。
1930
1931**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1932
1933**系统能力**:SystemCapability.Applications.CalendarData
1934
1935| 名称            | 值               | 说明         |
1936| --------------- | ---------------- | ------------ |
1937| MEETING         | 'Meeting'        | 一键入会。   |
1938| WATCHING        | 'Watching'       | 一键追剧。   |
1939| REPAYMENT       | 'Repayment'      | 一键还款。   |
1940| LIVE            | 'Live'           | 一键直播。   |
1941| SHOPPING        | 'Shopping'       | 一键购物。   |
1942| TRIP            | 'Trip'           | 一键查看。   |
1943| CLASS           | 'Class'          | 一键上课。   |
1944| SPORTS_EVENTS   | 'SportsEvents'   | 一键看赛事。 |
1945| SPORTS_EXERCISE | 'SportsExercise' | 一键运动。   |
1946
1947## AttendeeRole<sup>12+</sup>
1948
1949会议日程参与者角色类型枚举。
1950
1951**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1952
1953**系统能力**:SystemCapability.Applications.CalendarData
1954
1955| 名称           | 值             | 说明     |
1956|--------------|---------------|--------|
1957| ORGANIZER   | 'organizer'   | 会议组织者。 |
1958| PARTICIPANT | 'participant' | 会议参与者。 |
1959
1960## AttendeeStatus<sup>18+</sup>
1961
1962会议日程参与者状态类型枚举。
1963
1964**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
1965
1966**系统能力**:SystemCapability.Applications.CalendarData
1967
1968| 名称                         | 值   | 说明       |
1969|----------------------------|-----|----------|
1970| UNKNOWN      | 0   | 参与者状态未知。 |
1971| TENTATIVE    | 1   | 参与者状态暂定。 |
1972| ACCEPTED     | 2   | 参与者已接受。  |
1973| DECLINED     | 3   | 参与者已拒绝。  |
1974| UNRESPONSIVE | 4   | 参与者未响应。  |
1975
1976## AttendeeType<sup>18+</sup>
1977
1978会议日程参与者受邀类型枚举。
1979
1980**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
1981
1982**系统能力**:SystemCapability.Applications.CalendarData
1983
1984| 名称                     | 值   | 说明                 |
1985|------------------------|-----|--------------------|
1986| REQUIRED | 1   | 会议日程主送者。           |
1987| OPTIONAL | 2   | 会议日程抄送者。           |
1988| RESOURCE | 3   | 会议中使用的资源(电视或投影仪等)。 |
1989