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