• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# TimePicker
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @luoying_ace_admin-->
5<!--Designer: @weixin_52725220-->
6<!--Tester: @xiong0104-->
7<!--Adviser: @HelloCrease-->
8
9滑动选择时间的组件。
10
11>  **说明:**
12>
13> - 该组件从API version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
14>
15> - 该组件不建议开发者在动效过程中修改属性数据。
16>
17> - 该组件最大显示行数在横竖屏模式下存在差异,竖屏为5行,横屏为3行。
18
19
20## 子组件
21
2223
24
25## 接口
26
27TimePicker(options?: TimePickerOptions)
28
29创建滑动选择器,默认使用24小时的时间区间。
30
31**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
32
33**系统能力:** SystemCapability.ArkUI.ArkUI.Full
34
35**参数:**
36
37| 参数名  | 类型                                            | 必填 | 说明                     |
38| ------- | ----------------------------------------------- | ---- | ------------------------ |
39| options | [TimePickerOptions](#timepickeroptions对象说明) | 否   | 配置时间选择组件的参数。 |
40
41## TimePickerOptions对象说明
42
43时间选择器组件的参数说明。
44
45**系统能力:** SystemCapability.ArkUI.ArkUI.Full
46
47| 名称                 | 类型                                            | 只读 | 可选 | 说明                                                         |
48| -------------------- | ----------------------------------------------- | ---- | ---- | ------------------------------------------------------------ |
49| selected             | Date                                            | 否   | 是   | 设置选中项的时间。<br/>默认值:当前系统时间<br />从API version 10开始,该参数支持[$$](../../../ui/state-management/arkts-two-way-sync.md)双向绑定变量。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
50| format<sup>11+</sup> | [TimePickerFormat](#timepickerformat11枚举说明) | 否   | 是   | 指定需要显示的TimePicker的格式。<br/>默认值:TimePickerFormat.HOUR_MINUTE <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
51| start<sup>18+</sup>  | Date                                            | 否   | 是   | 指定时间选择组件的起始时间。<br/>默认值:Date(0, 0, 0, 0, 0, 0)<br/>**说明:**<br/>1. 仅设置的小时和分钟生效。<br/>2. 设置了start且为非默认值的场景下,loop不生效。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
52| end<sup>18+</sup>    | Date                                            | 否   | 是   | 指定时间选择组件的结束时间。<br/>默认值:Date(0, 0, 0, 23, 59, 59)<br/>**说明:**<br/>1. 仅设置的小时和分钟生效。<br/>2. 设置了end且为非默认值的场景下,loop不生效。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
53
54>  **说明:**
55>
56>  - 在TimePicker组件滑动过程中修改TimePickerOptions中的属性,会导致这些属性无法生效。
57>
58>  - Date对象用于处理日期和时间,使用方式如下。
59>
60>  **方式1:** new Date()
61>
62>  获取系统当前日期和时间。
63>
64>  **方式2:** new Date(value: number | string)
65>
66>  | 参数名   | 类型   | 必填 | 说明   |
67>  | ------- | ------ | ---- | ------ |
68>  | value   | number&nbsp;\|&nbsp;string  | 是 | 设置日期格式。<br/>number:毫秒,自1970年1月1日 00:00:00以来的毫秒数。<br/>string:时间格式的字符串,如‘2025-02-20 08:00:00’或‘2025-02-20T08:00:00’。|
69>
70>  **方式3:** new Date(year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number)
71>
72>  | 参数名   | 类型   | 必填 | 说明   |
73>  | --------| ------ | ---- | ------ |
74>  | year        | number | 是   | 设置年份,例如2025。|
75>  | monthIndex  | number | 是   | 设置月份索引,例如2,代表3月份。|
76>  | date        | number | 否   | 设置日期,例如10。(如果设置hours,则date不能省略)|
77>  | hours       | number | 否   | 设置小时,例如15。(如果设置minutes,则hours不能省略)|
78>  | minutes     | number | 否   | 设置分钟,例如20。(如果设置seconds,则minutes不能省略)|
79>  | seconds     | number | 否   | 设置秒,例如20。(如果设置ms,则seconds不能省略)|
80>  | ms          | number | 否   | 设置毫秒,例如10。|
81
82**起始时间和结束时间的异常情形说明:**
83
84| 异常情形   | 对应结果  |
85| -------- |  ------------------------------------------------------------ |
86| 起始时间晚于结束时间。    | 起始时间、结束时间都为默认值。  |
87| 选中时间早于起始时间。   | 选中时间为起始时间。  |
88| 选中时间晚于结束时间。    | 选中时间为结束时间。  |
89| 起始时间晚于当前系统时间,选中时间未设置。    | 选中时间为起始时间。 |
90| 结束时间早于当前系统时间,选中时间未设置。    | 选中时间为结束时间。  |
91| 时间格式不符合规范,如'01:61:61'。   | 取默认值。  |
92
93## TimePickerFormat<sup>11+</sup>枚举说明
94
95时间选择器的数据格式。
96
97**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
98
99**系统能力:** SystemCapability.ArkUI.ArkUI.Full
100
101| 名称               | 值 | 说明                     |
102| ------------------ | - | ------------------------ |
103| HOUR_MINUTE        | - | 按照小时和分钟进行显示。       |
104| HOUR_MINUTE_SECOND | - | 按照小时、分钟和秒进行显示。 |
105
106## 属性
107
108除支持[通用属性](ts-component-general-attributes.md)外,还支持以下属性:
109
110### useMilitaryTime
111
112useMilitaryTime(value: boolean)
113
114设置时间是否以24小时制展示,默认以12小时制展示。
115
116**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
117
118**系统能力:** SystemCapability.ArkUI.ArkUI.Full
119
120**参数:**
121
122| 参数名 | 类型    | 必填 | 说明                                       |
123| ------ | ------- | ---- | ------------------------------------------ |
124| value  | boolean | 是   | 时间是否以24小时制展示。<br/>- true:时间以24小时制展示。<br/>- false:时间以12小时制展示。<br/>默认值:false |
125
126### useMilitaryTime<sup>18+</sup>
127
128useMilitaryTime(isMilitaryTime: Optional\<boolean>)
129
130设置展示时间是否为24小时制,默认展示时间为12小时制。与[useMilitaryTime](#usemilitarytime)相比,isMilitaryTime参数新增了对undefined类型的支持。
131
132**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
133
134**系统能力:** SystemCapability.ArkUI.ArkUI.Full
135
136**参数:**
137
138| 参数名 | 类型    | 必填 | 说明                                       |
139| ------ | ------- | ---- | ------------------------------------------ |
140| isMilitaryTime | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<boolean> | 是   | 展示时间是否为24小时制。<br/>- true:展示时间为24小时制。<br/>- false:展示时间为12小时制。<br/>默认值:false<br/>当isMilitaryTime的值为undefined时,使用默认值。|
141
142### disappearTextStyle<sup>10+</sup>
143
144disappearTextStyle(value: PickerTextStyle)
145
146设置边缘项(以选中项为基准向上或向下的第二项)的文本颜色、字号、字体粗细。
147
148**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
149
150**系统能力:** SystemCapability.ArkUI.ArkUI.Full
151
152**参数:**
153
154| 参数名 | 类型                                                         | 必填 | 说明                                                         |
155| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
156| value  | [PickerTextStyle](ts-picker-common.md#pickertextstyle对象说明) | 是   | 边缘项的文本颜色、字号和字体粗细。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '14fp', <br/>weight: FontWeight.Regular<br/>}<br/>} |
157
158>  **说明:**
159>
160> 若选中项向上或向下的可视项数低于两项则无对应边缘项。
161
162### disappearTextStyle<sup>18+</sup>
163
164disappearTextStyle(style: Optional\<PickerTextStyle>)
165
166设置边缘项(以选中项为基准向上或向下的第二项)的文本颜色、字号、字体粗细。与[disappearTextStyle<sup>10+</sup>](#disappeartextstyle10)相比,style参数新增了对undefined类型的支持。
167
168**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
169
170**系统能力:** SystemCapability.ArkUI.ArkUI.Full
171
172**参数:**
173
174| 参数名 | 类型                                                         | 必填 | 说明                                                         |
175| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
176| style  | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<[PickerTextStyle](ts-picker-common.md#pickertextstyle对象说明)> | 是   | 边缘项的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '14fp', <br/>weight: FontWeight.Regular<br/>}<br/>}<br/>当style的值为undefined时,使用默认值。 |
177
178>  **说明:**
179>
180> 若选中项向上或向下的可视项数低于两项则无对应边缘项。
181
182### textStyle<sup>10+</sup>
183
184textStyle(value: PickerTextStyle)
185
186设置待选项(以选中项为基准向上或向下的第一项)的文本颜色、字号、字体粗细。
187
188**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
189
190**系统能力:** SystemCapability.ArkUI.ArkUI.Full
191
192**参数:**
193
194| 参数名 | 类型                                                         | 必填 | 说明                                                         |
195| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
196| value  | [PickerTextStyle](ts-picker-common.md#pickertextstyle对象说明) | 是   | 待选项的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '16fp', <br/>weight: FontWeight.Regular<br/>}<br/>} |
197
198>  **说明:**
199>
200> 若选中项向上或向下可视项数低于一项则无对应待选项。
201
202### textStyle<sup>18+</sup>
203
204textStyle(style: Optional\<PickerTextStyle>)
205
206设置待选项(以选中项为基准向上或向下的第一项)的文本颜色、字号、字体粗细。与[textStyle<sup>10+</sup>](#textstyle10)相比,style参数新增了对undefined类型的支持。
207
208**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
209
210**系统能力:** SystemCapability.ArkUI.ArkUI.Full
211
212**参数:**
213
214| 参数名 | 类型                                                         | 必填 | 说明                                                         |
215| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
216| style  | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<[PickerTextStyle](ts-picker-common.md#pickertextstyle对象说明)> | 是   | 待选项的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '16fp', <br/>weight: FontWeight.Regular<br/>}<br/>}<br/>当style的值为undefined时,使用默认值。 |
217
218>  **说明:**
219>
220> 若选中项向上或向下可视项数低于一项则无对应待选项。
221
222### selectedTextStyle<sup>10+</sup>
223
224selectedTextStyle(value: PickerTextStyle)
225
226设置选中项的文本颜色、字号和字体粗细。
227
228**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
229
230**系统能力:** SystemCapability.ArkUI.ArkUI.Full
231
232**设备行为差异:** 该属性在Wearable设备上使用无效果,在其他设备中可正常生效。
233
234**参数:**
235
236| 参数名 | 类型                                                         | 必填 | 说明                                                         |
237| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
238| value  | [PickerTextStyle](ts-picker-common.md#pickertextstyle对象说明) | 是   | 选中项的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff007dff',<br/>font: {<br/>size: '20fp', <br/>weight: FontWeight.Medium<br/>}<br/>} |
239
240### selectedTextStyle<sup>18+</sup>
241
242selectedTextStyle(style: Optional\<PickerTextStyle>)
243
244设置选中项的文本颜色、字号及字体粗细。与[selectedTextStyle<sup>10+</sup>](#selectedtextstyle10)相比,style参数新增了对undefined类型的支持
245
246**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
247
248**系统能力:** SystemCapability.ArkUI.ArkUI.Full
249
250**设备行为差异:** 该属性在Wearable设备上使用无效果,在其他设备中可正常生效。
251
252**参数:**
253
254| 参数名 | 类型                                                         | 必填 | 说明                                                         |
255| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
256| style  | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<[PickerTextStyle](ts-picker-common.md#pickertextstyle对象说明)> | 是   | 选中项的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff007dff',<br/>font: {<br/>size: '20fp', <br/>weight: FontWeight.Medium<br/>}<br/>}<br/>当style的值为undefined时,使用默认值。 |
257
258### loop<sup>11+</sup>
259
260loop(value: boolean)
261
262设置是否启用循环模式。
263
264**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
265
266**系统能力:** SystemCapability.ArkUI.ArkUI.Full
267
268**参数:**
269
270| 参数名 | 类型    | 必填 | 说明                                                         |
271| ------ | ------- | ---- | ------------------------------------------------------------ |
272| value  | boolean | 是   | 是否启用循环模式。<br/>- true:启用循环模式。<br/>- false:不启用循环模式。<br/>默认值:true |
273
274### loop<sup>18+</sup>
275
276loop(isLoop: Optional\<boolean>)
277
278设置是否启用循环模式。与[loop<sup>11+</sup>](#loop11)相比,isLoop参数新增了对undefined类型的支持。
279
280**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
281
282**系统能力:** SystemCapability.ArkUI.ArkUI.Full
283
284**参数:**
285
286| 参数名 | 类型    | 必填 | 说明                                                         |
287| ------ | ------- | ---- | ------------------------------------------------------------ |
288| isLoop  | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<boolean> | 是   | 是否启用循环模式。<br/>- true:启用循环模式。<br/>- false:不启用循环模式。<br/>默认值:true<br/>当isLoop的值为undefined时,使用默认值。 |
289
290### dateTimeOptions<sup>12+</sup>
291
292dateTimeOptions(value: DateTimeOptions)
293
294设置时分秒是否显示前导0。
295
296**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
297
298**系统能力:** SystemCapability.ArkUI.ArkUI.Full
299
300**参数:**
301
302| 参数名 | 类型                                      | 必填 | 说明                                                         |
303| ------ | ----------------------------------------- | ---- | ------------------------------------------------------------ |
304| value  | [DateTimeOptions](#datetimeoptions12对象说明) | 是   | 设置时分秒是否显示前导0。<br/>默认值:<br/>hour: 24小时制默认为"2-digit",设置hour是否按照2位数字显示,如果实际数值小于10,则会补充前导0并显示,即为"0X";12小时制默认为"numeric",即没有前导0。<br/>minute: 默认为"2-digit",设置minute是否按照2位数字显示,如果实际数值小于10,则会补充前导0并显示,即为"0X"。<br/>second: 默认为"2-digit",设置second是否按照2位数字显示,如果实际数值小于10,则会补充前导0并显示,即为"0X"。<br/> 当hour、minute、second的值设置为undefined时,显示效果与其默认值规则一致。|
305
306### dateTimeOptions<sup>18+</sup>
307
308dateTimeOptions(timeFormat: Optional\<DateTimeOptions>)
309
310设置时分秒是否显示前导0。与[dateTimeOptions<sup>12+</sup>](#datetimeoptions12)相比,timeFormat参数新增了对undefined类型的支持。
311
312**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
313
314**系统能力:** SystemCapability.ArkUI.ArkUI.Full
315
316**参数:**
317
318| 参数名 | 类型                                                         | 必填 | 说明                                                         |
319| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
320| timeFormat  | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<[DateTimeOptions](#datetimeoptions12对象说明)> | 是   | 设置时分秒是否显示前导0,目前只支持设置hour、minute和second参数。<br/>默认值:<br/>hour: 24小时制默认为"2-digit",设置hour是否按照2位数字显示,如果实际数值小于10,则会补充前导0并显示,即为"0X";12小时制默认为"numeric",即没有前导0。<br/>minute: 默认为"2-digit",设置minute是否按照2位数字显示,如果实际数值小于10,则会补充前导0并显示,即为"0X"。<br/>second: 默认为"2-digit",设置second是否按照2位数字显示,如果实际数值小于10,则会补充前导0并显示,即为"0X"。<br/> 当hour、minute、second的值设置为undefined时,显示效果与其默认值规则一致。|
321
322### enableHapticFeedback<sup>12+</sup>
323
324enableHapticFeedback(enable: boolean)
325
326设置是否支持触控反馈。
327
328**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
329
330**系统能力:** SystemCapability.ArkUI.ArkUI.Full
331
332**参数:**
333
334| 参数名 | 类型                                          | 必填  | 说明                                                                                  |
335| ------ | --------------------------------------------- | ----- |-------------------------------------------------------------------------------------|
336| enable  | boolean | 是   | 设置是否开启触控反馈。<br/>- true:开启触控反馈。<br/>- false:不开启触控反馈。<br/>默认值:true<br/>设置为true后,其生效情况取决于系统的硬件是否支持。 |
337
338>  **说明:**
339>
340>  开启触控反馈时,需要在工程的src/main/module.json5文件的"module"内配置requestPermissions字段开启振动权限,配置如下:
341>  ```json
342>  "requestPermissions": [
343>  {
344>   "name": "ohos.permission.VIBRATE",
345>  }
346>  ]
347>  ```
348
349### enableHapticFeedback<sup>18+</sup>
350
351enableHapticFeedback(enable: Optional\<boolean>)
352
353设置是否支持触控反馈。与[enableHapticFeedback<sup>12+</sup>](#enablehapticfeedback12)相比,enable参数新增了对undefined类型的支持。
354
355**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
356
357**系统能力:** SystemCapability.ArkUI.ArkUI.Full
358
359**参数:**
360
361| 参数名 | 类型                                          | 必填  | 说明                                                                                  |
362| ------ | --------------------------------------------- |-----|-------------------------------------------------------------------------------------|
363| enable  | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<boolean> | 是   | 设置是否开启触控反馈。<br/>- true:开启触控反馈。<br/>- false:不开启触控反馈。<br/>默认值:true<br/>当enable的值为undefined时,使用默认值。<br/>设置为true后,其生效情况取决于系统的硬件是否支持。 |
364
365>  **说明:**
366>
367>  开启触控反馈时,需要在工程的src/main/module.json5文件的"module"内配置requestPermissions字段开启振动权限,配置如下:
368>  ```json
369>  "requestPermissions": [
370>  {
371>   "name": "ohos.permission.VIBRATE",
372>  }
373>  ]
374>  ```
375
376### enableCascade<sup>18+</sup>
377
378enableCascade(enabled: boolean)
379
380设置上午和下午的标识是否根据小时数自动切换,仅在useMilitaryTime设置为false时生效。
381
382**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
383
384**系统能力:** SystemCapability.ArkUI.ArkUI.Full
385
386**参数:**
387
388| 参数名 | 类型                                          | 必填  | 说明                                                                                  |
389| ------ | --------------------------------------------- |-----|-------------------------------------------------------------------------------------|
390| enabled | boolean | 是   | 上午和下午的标识是否根据小时数自动切换,仅在useMilitaryTime设置为false时生效。<br/>- true:自动切换。<br/>- false:不自动切换。<br/>默认值:false<br/>当enabled设置为true时,仅在loop参数同时为true时生效。 |
391
392### digitalCrownSensitivity<sup>18+</sup>
393digitalCrownSensitivity(sensitivity: Optional\<CrownSensitivity>)
394
395设置表冠灵敏度。
396
397**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
398
399**系统能力:** SystemCapability.ArkUI.ArkUI.Full
400
401**参数:**
402
403| 参数名   | 类型                                     | 必填   | 说明                      |
404| ----- | ---------------------------------------- | ---- | ------------------------- |
405| sensitivity | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<[CrownSensitivity](ts-appendix-enums.md#crownsensitivity18)> | 是    | 表冠响应灵敏度。<br/>默认值:CrownSensitivity.MEDIUM,表示响应速度适中。                    |
406
407>  **说明:**
408>
409>  用于圆形屏幕的穿戴设备。组件响应[表冠事件](ts-universal-events-crown.md),需要先获取焦点。
410
411## 事件
412
413除支持[通用事件](ts-component-general-events.md)外,还支持以下事件:
414
415### onChange
416
417onChange(callback:&nbsp;(value:&nbsp;TimePickerResult )&nbsp;=&gt;&nbsp;void)
418
419滑动TimePicker后,时间选项归位至选中项位置时,触发该回调。不能通过双向绑定的状态变量触发。
420
421回调会在滑动动画结束后触发,如果需要快速获取索引值变化,建议使用[onEnterSelectedArea](#onenterselectedarea18)接口。
422
423**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
424
425**系统能力:** SystemCapability.ArkUI.ArkUI.Full
426
427**参数:**
428
429| 参数名 | 类型                                          | 必填 | 说明           |
430| ------ | --------------------------------------------- | ---- | -------------- |
431| value  | [TimePickerResult](#timepickerresult对象说明) | 是   | 24小时制时间。 |
432
433### onChange<sup>18+</sup>
434
435onChange(callback: Optional\<OnTimePickerChangeCallback>)
436
437滑动TimePicker后,时间选项归位至选中项位置时,触发该回调。不能通过双向绑定的状态变量触发。与[onChange](#onchange)相比,callback参数新增了对undefined类型的支持。
438
439回调会在滑动动画结束后触发,如果需要快速获取索引值变化,建议使用[onEnterSelectedArea](#onenterselectedarea18)接口。
440
441**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
442
443**系统能力:** SystemCapability.ArkUI.ArkUI.Full
444
445**参数:**
446
447| 参数名   | 类型                                                         | 必填 | 说明                                                         |
448| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
449| callback | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<[OnTimePickerChangeCallback](#ontimepickerchangecallback18)> | 是   | 选择时间时触发该回调。<br/>当callback的值为undefined时,不使用回调函数。 |
450
451### onEnterSelectedArea<sup>18+</sup>
452
453onEnterSelectedArea(callback: Callback\<TimePickerResult>)
454
455滑动TimePicker过程中,选项进入分割线区域内,触发该回调。
456
457与[onChange](#onchange)事件的差别在于,该事件的触发时机早于[onChange](#onchange)事件,当当前滑动列滑动距离超过选中项高度的一半时,选项此时已经进入分割线区域内,会触发该事件。当[enableCascade](#enablecascade18)设置为true时,由于上午/下午列与小时列存在联动关系,不建议使用该回调。该回调标识的是滑动过程中选项进入分割线区域内的节点,而联动变化的选项并不涉及滑动,因此,回调的返回值中,仅当前滑动列的值会正常变化,其余未滑动列的值保持不变。
458
459**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
460
461**系统能力:** SystemCapability.ArkUI.ArkUI.Full
462
463**参数:**
464
465| 参数名   | 类型                       | 必填 | 说明                                       |
466| -------- | -------------------------- | ---- | ------------------------------------------ |
467| callback | Callback\<[TimePickerResult](#timepickerresult对象说明)> | 是   | 滑动TimePicker过程中,选项进入分割线区域时触发的回调。 |
468
469## DateTimeOptions<sup>12+</sup>对象说明
470
471type DateTimeOptions = DateTimeOptions
472
473时间、日期格式化时可设置的配置项。
474
475**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
476
477**系统能力:** SystemCapability.ArkUI.ArkUI.Full
478
479| 类型                                                         | 说明                                       |
480| ------------------------------------------------------------ | ------------------------------------------ |
481| [DateTimeOptions](../../apis-localization-kit/js-apis-intl.md#datetimeoptionsdeprecated) | 创建时间、日期格式化对象时可设置的配置项。 |
482
483## OnTimePickerChangeCallback<sup>18+</sup>
484
485type OnTimePickerChangeCallback = (result: TimePickerResult) => void
486
487选择时间时触发该事件。
488
489**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
490
491**系统能力:** SystemCapability.ArkUI.ArkUI.Full
492
493**参数:**
494
495| 参数名 | 类型                                          | 必填 | 说明           |
496| ------ | --------------------------------------------- | ---- | -------------- |
497| result | [TimePickerResult](#timepickerresult对象说明) | 是   | 24小时制时间。 |
498
499## TimePickerResult对象说明
500
501返回24小时制时间。
502
503**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
504
505**系统能力:** SystemCapability.ArkUI.ArkUI.Full
506
507| 名称                 | 类型   | 只读 | 可选 | 说明                                |
508| -------------------- | ------ | ---- | ---- | ----------------------------------- |
509| hour                 | number | 否   | 否   | 选中时间的时。<br/>取值范围:[0-23] |
510| minute               | number | 否   | 否   | 选中时间的分。<br/>取值范围:[0-59] |
511| second<sup>11+</sup> | number | 否   | 否   | 选中时间的秒。<br/>取值范围:[0-59] |
512
513## 示例
514
515### 示例1(设置文本样式)
516
517该示例通过配置[disappearTextStyle](#disappeartextstyle10)、[textStyle](#textstyle10)和[selectedTextStyle](#selectedtextstyle10)实现文本选择器中的文本样式。
518
519```ts
520// xxx.ets
521@Entry
522@Component
523struct TimePickerExample {
524  private selectedTime: Date = new Date('2022-07-22T08:00:00');
525
526  build() {
527    TimePicker({
528      selected: this.selectedTime
529    })
530      .disappearTextStyle({ color: '#004aaf', font: { size: 24, weight: FontWeight.Lighter } })
531      .textStyle({ color: Color.Black, font: { size: 26, weight: FontWeight.Normal } })
532      .selectedTextStyle({ color: Color.Blue, font: { size: 30, weight: FontWeight.Bolder } })
533      .onChange((value: TimePickerResult) => {
534        if (value.hour >= 0) {
535          this.selectedTime.setHours(value.hour, value.minute);
536          console.info('select current date is: ' + JSON.stringify(value));
537        }
538      })
539  }
540}
541```
542
543![timePicker](figures/TimePickerDemo1.png)
544
545### 示例2(切换小时制)
546
547该示例通过配置useMilitaryTime实现12小时制、24小时制的切换。
548
549```ts
550// xxx.ets
551@Entry
552@Component
553struct TimePickerExample {
554  @State isMilitaryTime: boolean = false;
555  private selectedTime: Date = new Date('2022-07-22T08:00:00');
556
557  build() {
558    Column() {
559      Button('切换12小时制/24小时制')
560        .margin(30)
561        .onClick(() => {
562          this.isMilitaryTime = !this.isMilitaryTime;
563        })
564
565      TimePicker({
566        selected: this.selectedTime
567      })
568        .useMilitaryTime(this.isMilitaryTime)
569        .onChange((value: TimePickerResult) => {
570          if (value.hour >= 0) {
571            this.selectedTime.setHours(value.hour, value.minute);
572            console.info('select current time is: ' + JSON.stringify(value));
573          }
574        })
575        .onEnterSelectedArea((value: TimePickerResult) => {
576            console.info('item enter selected area, time is: ' + JSON.stringify(value));
577        })
578    }.width('100%')
579  }
580}
581```
582
583![timePicker](figures/TimePickerDemo2.gif)
584
585### 示例3(设置时间格式)
586
587该示例使用format和dateTimeOptions设置TimePicker时间格式。
588
589```ts
590// xxx.ets
591@Entry
592@Component
593struct TimePickerExample {
594  private selectedTime: Date = new Date('2022-07-22T08:00:00');
595
596  build() {
597    Column() {
598      TimePicker({
599        selected: this.selectedTime,
600        format: TimePickerFormat.HOUR_MINUTE_SECOND
601      })
602        .dateTimeOptions({ hour: "numeric", minute: "2-digit", second: "2-digit" })
603        .onChange((value: TimePickerResult) => {
604          if (value.hour >= 0) {
605            this.selectedTime.setHours(value.hour, value.minute);
606            console.info('select current date is: ' + JSON.stringify(value));
607          }
608        })
609    }.width('100%')
610  }
611}
612```
613
614![timePicker](figures/TimePickerDemo3.gif)
615
616### 示例4(设置循环滚动)
617
618该示例通过配置[loop](#loop11)设置TimePicker是否循环滚动。
619
620```ts
621// xxx.ets
622@Entry
623@Component
624struct TimePickerExample {
625  @State isLoop: boolean = true;
626  @State selectedTime: Date = new Date('2022-07-22T12:00:00');
627
628  build() {
629    Column() {
630      TimePicker({
631        selected: this.selectedTime
632      })
633        .loop(this.isLoop)
634        .onChange((value: TimePickerResult) => {
635          if (value.hour >= 0) {
636            this.selectedTime.setHours(value.hour, value.minute);
637            console.info('select current date is: ' + JSON.stringify(value));
638          }
639        })
640
641      Row() {
642        Text('循环滚动').fontSize(20)
643
644        Toggle({ type: ToggleType.Switch, isOn: true })
645          .onChange((isOn: boolean) => {
646            this.isLoop = isOn;
647          })
648      }.position({ x: '60%', y: '40%' })
649
650    }.width('100%')
651  }
652}
653```
654
655![timePicker](figures/TimePickerDemo4.gif)
656
657### 示例5(设置时间选择组件的起始时间)
658
659该示例设置TimePicker的起始时间。
660
661```ts
662// xxx.ets
663@Entry
664@Component
665struct TimePickerExample {
666  private selectedTime: Date = new Date('2022-07-22T08:50:00');
667
668  build() {
669    Column() {
670      TimePicker({
671        selected: this.selectedTime,
672        format: TimePickerFormat.HOUR_MINUTE_SECOND,
673        start: new Date('2022-07-22T08:30:00')
674      })
675        .dateTimeOptions({ hour: "numeric", minute: "2-digit", second: "2-digit" })
676        .onChange((value: TimePickerResult) => {
677          if (value.hour >= 0) {
678            this.selectedTime.setHours(value.hour, value.minute);
679            console.info('select current date is: ' + JSON.stringify(value));
680          }
681        })
682    }.width('100%')
683  }
684}
685```
686![timePicker](figures/TimePickerDemo5.png)
687
688### 示例6(设置时间选择组件的结束时间)
689
690该示例设置TimePicker的结束时间。
691
692```ts
693// xxx.ets
694@Entry
695@Component
696struct TimePickerExample {
697  private selectedTime: Date = new Date('2022-07-22T08:50:00');
698
699  build() {
700    Column() {
701      TimePicker({
702        selected: this.selectedTime,
703        format: TimePickerFormat.HOUR_MINUTE_SECOND,
704        end: new Date('2022-07-22T15:20:00'),
705      })
706        .dateTimeOptions({ hour: "numeric", minute: "2-digit", second: "2-digit" })
707        .onChange((value: TimePickerResult) => {
708          if (value.hour >= 0) {
709            this.selectedTime.setHours(value.hour, value.minute);
710            console.info('select current date is: ' + JSON.stringify(value));
711          }
712        })
713    }.width('100%')
714  }
715}
716```
717
718![timePicker](figures/TimePickerDemo6.png)
719
720### 示例7(设置上午下午跟随时间联动)
721
722该示例通过配置[enableCascade](#enablecascade18)、[loop](#loop11)实现12小时制时上午下午跟随时间联动。
723
724```ts
725// xxx.ets
726@Entry
727@Component
728struct TimePickerExample {
729  private selectedTime: Date = new Date('2022-07-22T08:00:00');
730
731  build() {
732    Column() {
733      TimePicker({
734        selected: this.selectedTime,
735      })
736        .enableCascade(true)
737        .loop(true)
738        .onChange((value: TimePickerResult) => {
739          if (value.hour >= 0) {
740            this.selectedTime.setHours(value.hour, value.minute);
741            console.info('select current date is: ' + JSON.stringify(value));
742          }
743        })
744    }.width('100%')
745  }
746}
747```
748
749![timePicker](figures/TimePickerDemo7.gif)
750