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