1# 时间滑动选择器弹窗 (TimePickerDialog) 2 3以24小时的时间区间创建时间滑动选择器,展示在弹窗上。 4 5> **说明:** 6> 7> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8> 9> 本模块功能依赖UI的执行上下文,不可在UI上下文不明确的地方使用,参见[UIContext](../js-apis-arkui-UIContext.md#uicontext)说明。 10> 11> 该组件不支持在Wearable设备上使用。 12 13## TimePickerDialog 14 15### show<sup>(deprecated)</sup> 16 17static show(options?: TimePickerDialogOptions) 18 19定义时间滑动选择器弹窗并弹出。 20 21> **说明:** 22> 23> 从API version 18开始废弃,建议使用[UIContext](../js-apis-arkui-UIContext.md#uicontext)中的[showTimePickerDialog](../js-apis-arkui-UIContext.md#showtimepickerdialog)替代。 24> 25> 从API version 10开始,可以通过使用[UIContext](../js-apis-arkui-UIContext.md#uicontext)中的[showTimePickerDialog](../js-apis-arkui-UIContext.md#showtimepickerdialog)来明确UI的执行上下文。 26 27**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 28 29**系统能力:** SystemCapability.ArkUI.ArkUI.Full 30 31**参数:** 32 33| 参数名 | 类型 | 必填 | 说明 | 34| ------- | ----------------------------------------------------------- | ---- | -------------------------- | 35| options | [TimePickerDialogOptions](#timepickerdialogoptions对象说明) | 否 | 配置时间选择器弹窗的参数。 | 36 37## TimePickerDialogOptions对象说明 38 39继承自[TimePickerOptions](ts-basic-components-timepicker.md#timepickeroptions对象说明)。 40 41**系统能力:** SystemCapability.ArkUI.ArkUI.Full 42 43| 名称 | 类型 | 必填 | 说明 | 44| -------- | -------- | -------- | -------- | 45| useMilitaryTime | boolean | 否 | 展示时间是否为24小时制,默认为12小时制。<br/>默认值:false<br />**说明:** 当展示时间为12小时制时,上下午与小时无联动关系。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 46| disappearTextStyle<sup>10+</sup> | [PickerTextStyle](ts-basic-components-datepicker.md#pickertextstyle10类型说明) | 否 | 设置所有选项中最上和最下两个选项的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '14fp', <br/>weight: FontWeight.Regular<br/>}<br/>}<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 47| textStyle<sup>10+</sup> | [PickerTextStyle](ts-basic-components-datepicker.md#pickertextstyle10类型说明) | 否 | 设置所有选项中除了最上、最下及选中项以外的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '16fp', <br/>weight: FontWeight.Regular<br/>}<br/>}<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 48| selectedTextStyle<sup>10+</sup> | [PickerTextStyle](ts-basic-components-datepicker.md#pickertextstyle10类型说明) | 否 | 设置选中项的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff007dff',<br/>font: {<br/>size: '20fp', <br/>weight: FontWeight.Medium<br/>}<br/>}<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 49| acceptButtonStyle<sup>12+</sup> | [PickerDialogButtonStyle](ts-methods-datepicker-dialog.md#pickerdialogbuttonstyle12类型说明) | 否 | 设置确认按钮显示样式、样式和重要程度、角色、背景色、圆角、文本颜色、字号、字体粗细、字体样式、字体列表、按钮是否默认响应Enter键。<br />**说明:**<br/> 1.acceptButtonStyle与cancelButtonStyle中最多只能有一个primary字段配置为true,如果同时设置为true,则primary字段不生效,保持默认值false。<br/>2.按钮高度默认40vp,在关怀模式-大字体场景下高度不变,即使按钮样式设置为圆角矩形[ROUNDED_RECTANGLE](ts-basic-components-button.md#buttontype枚举说明),呈现效果依然是胶囊型按钮[Capsule](ts-basic-components-button.md#buttontype枚举说明)。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 50| cancelButtonStyle<sup>12+</sup> | [PickerDialogButtonStyle](ts-methods-datepicker-dialog.md#pickerdialogbuttonstyle12类型说明) | 否 | 设置取消按钮显示样式、样式和重要程度、角色、背景色、圆角、文本颜色、字号、字体粗细、字体样式、字体列表、按钮是否默认响应Enter键。<br />**说明:**<br/>1.acceptButtonStyle与cancelButtonStyle中最多只能有一个primary字段配置为true,如果同时设置为true,则primary字段不生效,保持默认值false。<br/>2.按钮高度默认40vp,在关怀模式-大字体场景下高度不变,即使按钮样式设置为圆角矩形[ROUNDED_RECTANGLE](ts-basic-components-button.md#buttontype枚举说明),呈现效果依然是胶囊型按钮[Capsule](ts-basic-components-button.md#buttontype枚举说明)。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 51| alignment<sup>10+</sup> | [DialogAlignment](ts-methods-alert-dialog-box.md#dialogalignment枚举说明) | 否 | 弹窗在竖直方向上的对齐方式。<br>默认值:DialogAlignment.Default<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 52| offset<sup>10+</sup> | [Offset](ts-types.md#offset) | 否 | 弹窗相对alignment所在位置的偏移量。<br/>默认值:{ dx: 0 , dy: 0 }<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 53| maskRect<sup>10+</sup>| [Rectangle](ts-methods-alert-dialog-box.md#rectangle8类型说明) | 否 | 弹窗遮蔽层区域,在遮蔽层区域内的事件不透传,在遮蔽层区域外的事件透传。<br/>默认值:{ x: 0, y: 0, width: '100%', height: '100%' }<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 54| onAccept | (value: [TimePickerResult](ts-basic-components-timepicker.md#TimePickerResult对象说明)) => void | 否 | 点击弹窗中的“确定”按钮时触发该回调。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 55| onCancel | () => void | 否 | 点击弹窗中的“取消”按钮时触发该回调。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 56| onChange | (value: [TimePickerResult](ts-basic-components-timepicker.md#TimePickerResult对象说明)) => void | 否 | 滑动弹窗中的选择器后,选项归位至选中项位置时,触发该回调。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 57| backgroundColor<sup>11+</sup> | [ResourceColor](ts-types.md#resourcecolor) | 否 | 弹窗背板颜色。<br/>默认值:Color.Transparent<br/>**说明:** <br/>当设置了backgroundColor为非透明色时,backgroundBlurStyle需要设置为BlurStyle.NONE,否则颜色显示将不符合预期效果。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 58| backgroundBlurStyle<sup>11+</sup> | [BlurStyle](ts-universal-attributes-background.md#blurstyle9) | 否 | 弹窗背板模糊材质。<br/>默认值:BlurStyle.COMPONENT_ULTRA_THICK<br/>**说明:** <br/>设置为BlurStyle.NONE即可关闭背景虚化。当设置了backgroundBlurStyle为非NONE值时,则不要设置backgroundColor,否则颜色显示将不符合预期效果。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 59| onDidAppear<sup>12+</sup> | () => void | 否 | 弹窗弹出时的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange)>>onWillDisappear>>onDidDisappear。<br />2.在onDidAppear内设置改变弹窗显示效果的回调事件,二次弹出生效。<br />3.快速点击弹出,消失弹窗时,存在onWillDisappear在onDidAppear前生效。<br />4. 当弹窗入场动效未完成时关闭弹窗,该回调不会触发。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 60| onDidDisappear<sup>12+</sup> | () => void | 否 | 弹窗消失时的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange)>>onWillDisappear>>onDidDisappear。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 61| onWillAppear<sup>12+</sup> | () => void | 否 | 弹窗显示动效前的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange)>>onWillDisappear>>onDidDisappear。<br />2.在onWillAppear内设置改变弹窗显示效果的回调事件,二次弹出生效。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 62| onWillDisappear<sup>12+</sup> | () => void | 否 | 弹窗退出动效前的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange)>>onWillDisappear>>onDidDisappear。<br />2.快速点击弹出,消失弹窗时,存在onWillDisappear在onDidAppear前生效。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 63| shadow<sup>12+</sup> | [ShadowOptions](ts-universal-attributes-image-effect.md#shadowoptions对象说明) \| [ShadowStyle](ts-universal-attributes-image-effect.md#shadowstyle10枚举说明) | 否 | 设置弹窗背板的阴影。<br />当设备为2in1时,默认场景下获焦阴影值为ShadowStyle.OUTER_FLOATING_MD,失焦为ShadowStyle.OUTER_FLOATING_SM。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 64| dateTimeOptions<sup>12+</sup> | [DateTimeOptions](../../apis-localization-kit/js-apis-intl.md#datetimeoptions) | 否 | 设置时分是否显示前置0,目前只支持设置hour和minute参数。<br/>默认值:<br/>hour: 24小时制默认为"2-digit",即有前置0;12小时制默认为"numeric",即没有前置0。<br/>minute: 默认为"2-digit",即有前置0。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 65| enableHoverMode<sup>14+</sup> | boolean | 否 | 是否响应悬停态。<br />默认值:false,默认不响应。<br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。| 66| hoverModeArea<sup>14+</sup> | [HoverModeAreaType](ts-appendix-enums.md#hovermodeareatype14) | 否 | 悬停态下弹窗默认展示区域。<br />默认值:HoverModeAreaType.BOTTOM_SCREEN <br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。| 67| onEnterSelectedArea<sup>18+</sup> | Callback\<[TimePickerResult](ts-basic-components-timepicker.md#TimePickerResult对象说明)> | 否 | 滑动过程中,选项进入分割线区域内,触发该回调。与onChange事件的差别在于,该事件的触发时机早于onChange事件,当当前滑动列滑动距离超过选中项高度的一半时,选项此时已经进入分割线区域内,会触发该事件。<br />**说明:**<br />当enableCascade设置为true时,由于上午/下午列与小时列存在联动关系,不建议使用该回调。该回调标识的是滑动过程中选项进入分割线区域内的节点,而联动变化的选项并不涉及滑动,因此,回调的返回值中,仅当前滑动列的值会正常变化,其余未滑动列的值保持不变。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 | 68| enableCascade<sup>18+</sup> | boolean | 否 | 在12小时制时,设置上午和下午的标识是否会根据小时数自动切换。<br/>默认值:false,false表示不开启自动切换,true表示开启自动切换。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。| 69| enableHapticFeedback<sup>18+</sup> | boolean | 否 | 设置是否开启触控反馈。<br />默认值:true,true表示开启触控反馈,false表示不开启触控反馈。<br />**原子化服务API**: 从API version 18开始,该接口支持在原子化服务中使用。<br />**说明**:<br />开启触控反馈时,需要在工程的module.json5中配置requestPermissions字段开启振动权限,配置如下:<br />"requestPermissions": [{"name": "ohos.permission.VIBRATE"}]| 70 71**异常情形说明:** 72 73| 异常情形 | 对应结果 | 74| -------- | ------------------------------------------------------------ | 75| 起始时间晚于结束时间 | 起始时间、结束时间都为默认值 | 76| 选中时间早于起始时间 | 选中时间为起始时间 | 77| 选中时间晚于结束时间 | 选中时间为结束时间 | 78| 起始时间晚于当前系统时间,选中时间未设置 | 选中时间为起始时间 | 79| 结束时间早于当前系统时间,选中时间未设置 | 选中时间为结束时间 | 80| 时间格式不符合规范,如'01:61:61' | 取默认值 | 81 82## 示例 83 84> **说明:** 85> 86> 推荐通过使用[UIContext](../js-apis-arkui-UIContext.md#uicontext)中的[showTimePickerDialog](../js-apis-arkui-UIContext.md#showtimepickerdialog)来明确UI的执行上下文。 87 88### 示例1(设置时间格式) 89 90该示例通过useMilitaryTime、dateTimeOptions、format设置时间格式。 91 92```ts 93@Entry 94@Component 95struct TimePickerDialogExample { 96 private selectTime: Date = new Date('2020-12-25T08:30:00') 97 98 build() { 99 Column() { 100 Button("TimePickerDialog 12小时制") 101 .margin(20) 102 .onClick(() => { 103 this.getUIContext().showTimePickerDialog({ 104 selected: this.selectTime, 105 format: TimePickerFormat.HOUR_MINUTE, 106 useMilitaryTime: false, 107 dateTimeOptions: { hour: "numeric", minute: "2-digit" }, 108 onAccept: (value: TimePickerResult) => { 109 // 设置selectTime为按下确定按钮时的时间,这样当弹窗再次弹出时显示选中的为上一次确定的时间 110 if (value.hour != undefined && value.minute != undefined) { 111 this.selectTime.setHours(value.hour, value.minute) 112 console.info("TimePickerDialog:onAccept()" + JSON.stringify(value)) 113 } 114 }, 115 onCancel: () => { 116 console.info("TimePickerDialog:onCancel()") 117 }, 118 onChange: (value: TimePickerResult) => { 119 console.info("TimePickerDialog:onChange()" + JSON.stringify(value)) 120 }, 121 onDidAppear: () => { 122 console.info("TimePickerDialog:onDidAppear()") 123 }, 124 onDidDisappear: () => { 125 console.info("TimePickerDialog:onDidDisappear()") 126 }, 127 onWillAppear: () => { 128 console.info("TimePickerDialog:onWillAppear()") 129 }, 130 onWillDisappear: () => { 131 console.info("TimePickerDialog:onWillDisappear()") 132 } 133 }) 134 }) 135 Button("TimePickerDialog 24小时制") 136 .margin(20) 137 .onClick(() => { 138 this.getUIContext().showTimePickerDialog({ 139 selected: this.selectTime, 140 format: TimePickerFormat.HOUR_MINUTE_SECOND, 141 useMilitaryTime: true, 142 onAccept: (value: TimePickerResult) => { 143 if (value.hour != undefined && value.minute != undefined) { 144 this.selectTime.setHours(value.hour, value.minute) 145 console.info("TimePickerDialog:onAccept()" + JSON.stringify(value)) 146 } 147 }, 148 }) 149 }) 150 }.width('100%') 151 } 152} 153``` 154 155 156 157 158### 示例2(自定义样式) 159 160该示例通过配置disappearTextStyle、textStyle、selectedTextStyle、acceptButtonStyle、cancelButtonStyle实现了自定义文本以及按钮样式。 161 162```ts 163// xxx.ets 164@Entry 165@Component 166struct TimePickerDialogExample { 167 private selectTime: Date = new Date('2020-12-25T08:30:00') 168 169 build() { 170 Column() { 171 Button("TimePickerDialog 24小时制") 172 .margin(20) 173 .onClick(() => { 174 this.getUIContext().showTimePickerDialog({ 175 disappearTextStyle: { color: '#297bec', font: { size: 15, weight: FontWeight.Lighter } }, 176 textStyle: { color: Color.Black, font: { size: 20, weight: FontWeight.Normal } }, 177 selectedTextStyle: { color: Color.Blue, font: { size: 30, weight: FontWeight.Bolder } }, 178 acceptButtonStyle: { 179 type: ButtonType.Normal, 180 style: ButtonStyleMode.NORMAL, 181 role: ButtonRole.NORMAL, 182 fontColor: 'rgb(81, 81, 216)', 183 fontSize: '26fp', 184 fontWeight: FontWeight.Bolder, 185 fontStyle: FontStyle.Normal, 186 fontFamily: 'sans-serif', 187 backgroundColor: '#A6ACAF', 188 borderRadius: 20 189 }, 190 cancelButtonStyle: { 191 type: ButtonType.Normal, 192 style: ButtonStyleMode.NORMAL, 193 role: ButtonRole.NORMAL, 194 fontColor: Color.Blue, 195 fontSize: '16fp', 196 fontWeight: FontWeight.Normal, 197 fontStyle: FontStyle.Italic, 198 fontFamily: 'sans-serif', 199 backgroundColor: '#50182431', 200 borderRadius: 10 201 }, 202 onAccept: (value: TimePickerResult) => { 203 if (value.hour != undefined && value.minute != undefined) { 204 this.selectTime.setHours(value.hour, value.minute) 205 console.info("TimePickerDialog:onAccept()" + JSON.stringify(value)) 206 } 207 } 208 }) 209 }) 210 }.width('100%') 211 } 212} 213``` 214 215 216 217### 示例3(悬停态弹窗) 218 219该示例展示了在折叠屏悬停态下设置dialog布局区域的效果。 220 221```ts 222@Entry 223@Component 224struct TimePickerDialogExample { 225 private selectTime: Date = new Date('2020-12-25T08:30:00'); 226 227 build() { 228 Column() { 229 Button("TimePickerDialog 12小时制") 230 .margin(20) 231 .onClick(() => { 232 this.getUIContext().showTimePickerDialog({ 233 selected: this.selectTime, 234 disappearTextStyle: { color: Color.Red, font: { size: 15, weight: FontWeight.Lighter } }, 235 textStyle: { color: Color.Black, font: { size: 20, weight: FontWeight.Normal } }, 236 selectedTextStyle: { color: Color.Blue, font: { size: 30, weight: FontWeight.Bolder } }, 237 onAccept: (value: TimePickerResult) => { 238 // 设置selectTime为按下确定按钮时的时间,这样当弹窗再次弹出时显示选中的为上一次确定的时间 239 if (value.hour != undefined && value.minute != undefined) { 240 this.selectTime.setHours(value.hour, value.minute); 241 console.info("TimePickerDialog:onAccept()" + JSON.stringify(value)); 242 } 243 }, 244 onCancel: () => { 245 console.info("TimePickerDialog:onCancel()"); 246 }, 247 onChange: (value: TimePickerResult) => { 248 console.info("TimePickerDialog:onChange()" + JSON.stringify(value)); 249 }, 250 onDidAppear: () => { 251 console.info("TimePickerDialog:onDidAppear()"); 252 }, 253 onDidDisappear: () => { 254 console.info("TimePickerDialog:onDidDisappear()"); 255 }, 256 onWillAppear: () => { 257 console.info("TimePickerDialog:onWillAppear()"); 258 }, 259 onWillDisappear: () => { 260 console.info("TimePickerDialog:onWillDisappear()"); 261 }, 262 enableHoverMode: true, 263 hoverModeArea: HoverModeAreaType.TOP_SCREEN 264 }) 265 }) 266 }.width('100%') 267 } 268} 269``` 270 271 272 273### 示例4(设置弹窗位置) 274 275该实例通过alignment、offset设置弹窗的位置 276 277```ts 278// xxx.ets 279@Entry 280@Component 281struct TimePickerDialogExample { 282 private selectTime: Date = new Date('2020-12-25T08:30:00') 283 284 build() { 285 Column() { 286 Button("TimePickerDialog") 287 .margin(20) 288 .onClick(() => { 289 this.getUIContext().showTimePickerDialog({ 290 alignment: DialogAlignment.Center, 291 offset: { dx: 20 , dy: 0 }, 292 onAccept: (value: TimePickerResult) => { 293 // 设置selectTime为按下确定按钮时的时间,这样当弹窗再次弹出时显示选中的为上一次确定的时间 294 if (value.hour != undefined && value.minute != undefined) { 295 this.selectTime.setHours(value.hour, value.minute) 296 console.info("TimePickerDialog:onAccept()" + JSON.stringify(value)) 297 } 298 } 299 }) 300 }) 301 }.width('100%') 302 } 303} 304``` 305 306 307 308### 示例5(设置遮蔽区) 309 310该实例通过maskRect设置遮蔽区 311 312```ts 313// xxx.ets 314@Entry 315@Component 316struct TimePickerDialogExample { 317 private selectTime: Date = new Date('2020-12-25T08:30:00') 318 319 build() { 320 Column() { 321 Button("TimePickerDialog") 322 .margin(20) 323 .onClick(() => { 324 this.getUIContext().showTimePickerDialog({ 325 maskRect: { x: 30, y: 60, width: '100%', height: '60%' }, 326 onAccept: (value: TimePickerResult) => { 327 // 设置selectTime为按下确定按钮时的时间,这样当弹窗再次弹出时显示选中的为上一次确定的时间 328 if (value.hour != undefined && value.minute != undefined) { 329 this.selectTime.setHours(value.hour, value.minute) 330 console.info("TimePickerDialog:onAccept()" + JSON.stringify(value)) 331 } 332 } 333 }) 334 }) 335 }.width('100%') 336 } 337} 338``` 339 340 341 342### 示例6(设置弹窗背板) 343 344该实例通过maskRect设置遮蔽区 345 346```ts 347// xxx.ets 348@Entry 349@Component 350struct TimePickerDialogExample { 351 private selectTime: Date = new Date('2020-12-25T08:30:00') 352 353 build() { 354 Column() { 355 Button("TimePickerDialog") 356 .margin(20) 357 .onClick(() => { 358 this.getUIContext().showTimePickerDialog({ 359 backgroundColor: 'rgb(204, 226, 251)', 360 backgroundBlurStyle: BlurStyle.NONE, 361 shadow: ShadowStyle.OUTER_FLOATING_SM, 362 onAccept: (value: TimePickerResult) => { 363 // 设置selectTime为按下确定按钮时的时间,这样当弹窗再次弹出时显示选中的为上一次确定的时间 364 if (value.hour != undefined && value.minute != undefined) { 365 this.selectTime.setHours(value.hour, value.minute) 366 console.info("TimePickerDialog:onAccept()" + JSON.stringify(value)) 367 } 368 } 369 }) 370 }) 371 }.width('100%') 372 } 373} 374``` 375 376 377### 示例7(设置时间滑动选择器弹窗的起始时间) 378 379该示例设置TimePickerDialog的起始时间。 380 381```ts 382// xxx.ets 383@Entry 384@Component 385struct TimePickerDialogExample { 386 private selectTime: Date = new Date('2022-07-22T08:50:00') 387 388 build() { 389 Column() { 390 Button("TimePickerDialog") 391 .margin(20) 392 .onClick(() => { 393 this.getUIContext().showTimePickerDialog({ 394 useMilitaryTime: false, 395 selected: this.selectTime, 396 format: TimePickerFormat.HOUR_MINUTE_SECOND, 397 start: new Date('2022-07-22T08:30:00'), 398 onAccept: (value: TimePickerResult) => { 399 // 设置selectTime为按下确定按钮时的时间,这样当弹窗再次弹出时显示选中的为上一次确定的时间 400 if (value.hour != undefined && value.minute != undefined) { 401 this.selectTime.setHours(value.hour, value.minute) 402 console.info("TimePickerDialog:onAccept()" + JSON.stringify(value)) 403 } 404 } 405 }) 406 }) 407 }.width('100%') 408 } 409} 410``` 411 412 413### 示例8(设置时间滑动选择器弹窗的结束时间) 414 415该示例设置TimePickerDialog的结束时间。 416 417```ts 418// xxx.ets 419@Entry 420@Component 421struct TimePickerDialogExample { 422 private selectTime: Date = new Date('2022-07-22T08:50:00') 423 424 build() { 425 Column() { 426 Button("TimePickerDialog") 427 .margin(20) 428 .onClick(() => { 429 this.getUIContext().showTimePickerDialog({ 430 useMilitaryTime: false, 431 selected: this.selectTime, 432 format: TimePickerFormat.HOUR_MINUTE_SECOND, 433 end: new Date('2022-07-22T15:20:00'), 434 onAccept: (value: TimePickerResult) => { 435 // 设置selectTime为按下确定按钮时的时间,这样当弹窗再次弹出时显示选中的为上一次确定的时间 436 if (value.hour != undefined && value.minute != undefined) { 437 this.selectTime.setHours(value.hour, value.minute) 438 console.info("TimePickerDialog:onAccept()" + JSON.stringify(value)) 439 } 440 } 441 }) 442 }) 443 }.width('100%') 444 } 445} 446``` 447 448 449### 示例9(设置上午下午跟随时间联动) 450 451该示例通过配置enableCascade实现12小时制时上午下午跟随时间联动。 452 453```ts 454// xxx.ets 455@Entry 456@Component 457struct TimePickerDialogExample { 458 private selectTime: Date = new Date('2022-07-22T08:00:00') 459 460 build() { 461 Column() { 462 Button("TimePickerDialog") 463 .margin(20) 464 .onClick(() => { 465 this.getUIContext().showTimePickerDialog({ 466 useMilitaryTime: false, 467 selected: this.selectTime, 468 enableCascade:true, 469 onAccept: (value: TimePickerResult) => { 470 // 设置selectTime为按下确定按钮时的时间,这样当弹窗再次弹出时显示选中的为上一次确定的时间 471 if (value.hour != undefined && value.minute != undefined) { 472 this.selectTime.setHours(value.hour, value.minute) 473 console.info("TimePickerDialog:onAccept()" + JSON.stringify(value)) 474 } 475 } 476 }) 477 }) 478 }.width('100%') 479 } 480} 481``` 482 483 484