1# 日期滑动选择器弹窗 (DatePickerDialog) 2 3根据指定的日期范围创建日期滑动选择器,展示在弹窗上。 4 5> **说明:** 6> 7> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8> 9> 本模块功能依赖UI的执行上下文,不可在UI上下文不明确的地方使用,参见[UIContext](../js-apis-arkui-UIContext.md#uicontext)说明。 10> 11> 该组件不支持在Wearable设备上使用。 12 13## DatePickerDialog 14 15### show<sup>(deprecated)</sup> 16 17static show(options?: DatePickerDialogOptions) 18 19定义日期滑动选择器弹窗并弹出。 20 21> **说明:** 22> 23> 从API version 18开始废弃,建议使用[UIContext](../js-apis-arkui-UIContext.md#uicontext)中的[showDatePickerDialog](../js-apis-arkui-UIContext.md#showdatepickerdialog)替代。 24> 25> 从API version 10开始,可以通过使用[UIContext](../js-apis-arkui-UIContext.md#uicontext)中的[showDatePickerDialog](../js-apis-arkui-UIContext.md#showdatepickerdialog)来明确UI的执行上下文。 26 27**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 28 29**系统能力:** SystemCapability.ArkUI.ArkUI.Full 30 31**参数:** 32 33| 参数名 | 类型 | 必填 | 说明 | 34| ------- | ----------------------------------------------------------- | ---- | -------------------------- | 35| options | [DatePickerDialogOptions](#datepickerdialogoptions对象说明) | 否 | 配置日期选择器弹窗的参数。 | 36 37## DatePickerDialogOptions对象说明 38 39继承自[DatePickerOptions](ts-basic-components-datepicker.md#datepickeroptions对象说明)。 40 41**系统能力:** SystemCapability.ArkUI.ArkUI.Full 42 43| 名称 | 类型 | 必填 | 说明 | 44| -------- | -------- | -------- | -------- | 45| lunar | boolean | 否 | 日期是否显示为农历,true表示显示农历,false表示不显示农历。<br/>默认值:false<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 46| showTime<sup>10+</sup> | boolean | 否 | 是否展示时间项,true表示显示时间,false表示不显示时间。<br/>默认值:false<br/>当showTime=true时,mode参数不生效,显示默认年月日三列。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 47| useMilitaryTime<sup>10+</sup> | boolean | 否 | 展示时间是否为24小时制,true表示显示24小时制,false表示显示12小时制。<br/>默认值:false<br />**说明:** <br/>当展示时间为12小时制时,上下午与小时无联动关系。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 48| lunarSwitch<sup>10+</sup> | boolean | 否 | 是否展示切换农历的开关,true表示展示开关,false表示不展示开关。<br/>默认值:false<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 49| lunarSwitchStyle<sup>14+</sup> | [LunarSwitchStyle](#lunarswitchstyle14类型说明) | 否 | 设置农历开关的颜色样式。<br/>默认值:{ selectedColor: `$r('sys.color.ohos_id_color_text_primary_actived')`, unselectedColor: `$r('sys.color.ohos_id_color_switch_outline_off')`, strokeColor: Color.White }<br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 50| 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开始,该接口支持在原子化服务中使用。 | 51| 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开始,该接口支持在原子化服务中使用。 | 52| 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开始,该接口支持在原子化服务中使用。| 53| acceptButtonStyle<sup>12+</sup> | [PickerDialogButtonStyle](#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开始,该接口支持在原子化服务中使用。| 54| cancelButtonStyle<sup>12+</sup> | [PickerDialogButtonStyle](#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开始,该接口支持在原子化服务中使用。| 55| alignment<sup>10+</sup> | [DialogAlignment](ts-methods-alert-dialog-box.md#dialogalignment枚举说明) | 否 | 弹窗在竖直方向上的对齐方式。<br>默认值:DialogAlignment.Default<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 56| offset<sup>10+</sup> | [Offset](ts-types.md#offset) | 否 | 弹窗相对alignment所在位置的偏移量。<br/>默认值:{ dx: 0 , dy: 0 }<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 57| 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开始,该接口支持在原子化服务中使用。 | 58| onAccept<sup>(deprecated)</sup> | (value: [DatePickerResult](ts-basic-components-datepicker.md#datepickerresult对象说明)) => void | 否 | 点击弹窗中的“确定”按钮时触发该回调。<br />**说明:**<br />从API version 8 开始支持,从 API version 10 开始废弃,建议使用onDateAccept。 | 59| onCancel | [VoidCallback](ts-types.md#voidcallback12) | 否 | 点击弹窗中的“取消”按钮时触发该回调。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 60| onChange<sup>(deprecated)</sup> | (value: [DatePickerResult](ts-basic-components-datepicker.md#datepickerresult对象说明)) => void | 否 | 滑动弹窗中的滑动选择器使当前选中项改变时触发该回调。<br />**说明:**<br />从API version 8 开始支持,从 API version 10 开始废弃,建议使用onDateChange。 | 61| onDateAccept<sup>10+</sup> | [Callback](ts-types.md#callback12)\<Date> | 否 | 点击弹窗中的“确定”按钮时触发该回调。<br />**说明:**<br />当showTime设置为true时,回调接口返回值value中时和分为选择器选择的时和分。否则,返回值value中时和分为系统时间的时和分。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 62| onDateChange<sup>10+</sup> | [Callback](ts-types.md#callback12)\<Date> | 否 | 滑动弹窗中的滑动选择器使当前选中项改变时触发该回调。<br />**说明:**<br />当showTime设置为true时,回调接口返回值value中时和分为选择器选择的时和分。否则,返回值value中时和分为系统时间的时和分。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 63| backgroundColor<sup>11+</sup> | [ResourceColor](ts-types.md#resourcecolor) | 否 | 弹窗背板颜色。<br/>默认值:Color.Transparent<br/>**说明:** <br/>当设置了backgroundColor为非透明色时,backgroundBlurStyle需要设置为BlurStyle.NONE,否则颜色显示将不符合预期效果。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 64| 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开始,该接口支持在原子化服务中使用。 | 65| onDidAppear<sup>12+</sup> | [VoidCallback](ts-types.md#voidcallback12) | 否 | 弹窗弹出时的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onDateAccept/onCancel/onDateChange)>>onWillDisappear>>onDidDisappear。<br />2.在onDidAppear内设置改变弹窗显示效果的回调事件,二次弹出生效。<br />3.快速点击弹出,消失弹窗时,存在onWillDisappear在onDidAppear前生效。<br />4. 当弹窗入场动效未完成时关闭弹窗,该回调不会触发。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 66| onDidDisappear<sup>12+</sup> | [VoidCallback](ts-types.md#voidcallback12) | 否 | 弹窗消失时的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onDateAccept/onCancel/onDateChange)>>onWillDisappear>>onDidDisappear。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 67| onWillAppear<sup>12+</sup> | [VoidCallback](ts-types.md#voidcallback12) | 否 | 弹窗显示动效前的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onDateAccept/onCancel/onDateChange)>>onWillDisappear>>onDidDisappear。<br />2.在onWillAppear内设置改变弹窗显示效果的回调事件,二次弹出生效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 68| onWillDisappear<sup>12+</sup> | [VoidCallback](ts-types.md#voidcallback12) | 否 | 弹窗退出动效前的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onDateAccept/onCancel/onDateChange)>>onWillDisappear>>onDidDisappear。<br />2.快速点击弹出,消失弹窗时,存在onWillDisappear在onDidAppear前生效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 69| 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开始,该接口支持在原子化服务中使用。| 70| 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开始,该接口支持在原子化服务中使用。| 71| enableHoverMode<sup>14+</sup> | boolean | 否 | 是否响应悬停态。<br />默认值:false,默认不响应。<br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。| 72| hoverModeArea<sup>14+</sup> | [HoverModeAreaType](ts-appendix-enums.md#hovermodeareatype14) | 否 | 悬停态下弹窗默认展示区域。<br />默认值:HoverModeAreaType.BOTTOM_SCREEN <br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。| 73| 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"}]| 74 75## LunarSwitchStyle<sup>14+</sup>类型说明 76 77该类型定义了DatePickerDialog组件中切换农历开关的样式。 78 79**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 80 81**系统能力:** SystemCapability.ArkUI.ArkUI.Full 82 83| 参数名 | 类型 | 必填 | 说明 | 84| ------ |-------------------|-----|----------| 85| selectedColor| [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置开关开启时开关的背景颜色。<br/>默认值:$r('sys.color.ohos_id_color_text_primary_actived')。 | 86| unselectedColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置开关未开启时开关的边框颜色。<br/>默认值:$r('sys.color.ohos_id_color_switch_outline_off')。 | 87| strokeColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置开关内部图标颜色。<br/>默认值:Color.White。 | 88 89## PickerDialogButtonStyle<sup>12+</sup>类型说明 90 91**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 92 93**系统能力:** SystemCapability.ArkUI.ArkUI.Full 94 95| 参数名 | 参数类型 | 必填 | 参数描述 | 96| ----- | ---------------------------------------- | ---- | ------------------------- | 97| type | [ButtonType](ts-basic-components-button.md#buttontype枚举说明) | 否 | 按钮显示样式。 | 98| style | [ButtonStyleMode](ts-basic-components-button.md#buttonstylemode11枚举说明) | 否 | 按钮的样式和重要程度。 | 99| role | [ButtonRole](ts-basic-components-button.md#buttonrole12枚举说明) | 否 | Button组件的角色。 | 100| fontSize | [Length](ts-types.md#length) | 否 | 文本显示字号。 | 101| fontColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 文本显示颜色。 | 102| fontWeight | [FontWeight](ts-appendix-enums.md#fontweight) \| number \| string| 否 | 文本的字体粗细。number类型取值[100, 900],取值间隔为100,取值越大,字体越粗。string类型仅支持number类型取值的字符串形式,例如"200",以及"bold"、"bolder"、"lighter"、"regular"、"medium",分别对应FontWeight中相应的枚举值。 | 103| fontStyle | [FontStyle](ts-appendix-enums.md#fontstyle) | 否 | 文本的字体样式。 | 104| fontFamily | [Resource](ts-types.md#resource) \| string | 否 | 字体列表。默认字体'HarmonyOS Sans',当前支持'HarmonyOS Sans'字体和[注册自定义字体](../js-apis-font.md)。 | 105| backgroundColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 按钮背景色。 | 106| borderRadius | [Length](ts-types.md#length) \| [BorderRadiuses](ts-types.md#borderradiuses9)| 否 | 圆角半径。 | 107| primary | boolean | 否 | 在弹窗获焦且未进行tab键走焦时,按钮是否默认响应Enter键。 | 108 109**异常情形说明:** 110 111| 异常情形 | 对应结果 | 112| -------- | ------------------------------------------------------------ | 113| 起始日期晚于结束日期,选中日期未设置 | 起始日期、结束日期和选中日期都为默认值 | 114| 起始日期晚于结束日期,选中日期早于起始日期默认值 | 起始日期、结束日期都为默认值,选中日期为起始日期默认值 | 115| 起始日期晚于结束日期,选中日期晚于结束日期默认值 | 起始日期、结束日期都为默认值,选中日期为结束日期默认值 | 116| 起始日期晚于结束日期,选中日期在起始日期与结束日期默认值范围内 | 起始日期、结束日期都为默认值,选中日期为设置的值 | 117| 选中日期早于起始日期 | 选中日期为起始日期 | 118| 选中日期晚于结束日期 | 选中日期为结束日期 | 119| 起始日期晚于当前系统日期,选中日期未设置 | 选中日期为起始日期 | 120| 结束日期早于当前系统日期,选中日期未设置 | 选中日期为结束日期 | 121| 日期格式不符合规范,如‘1999-13-32’ | 取默认值 | 122| 起始日期或结束日期早于系统有效范围 | 起始日期或结束日期取系统有效范围最早日期 | 123| 起始日期或结束日期晚于系统有效范围 | 起始日期或结束日期取系统有效范围最晚日期 | 124 125系统日期范围:1900-1-31 ~ 2100-12-31 126 127选中日期会在起始日期与结束日期异常处理完成后再进行异常情形判断处理 128 129## 示例 130 131> **说明:** 132> 133> 推荐通过使用[UIContext](../js-apis-arkui-UIContext.md#uicontext)中的[showDatePickerDialog](../js-apis-arkui-UIContext.md#showdatepickerdialog)来明确UI的执行上下文。 134 135### 示例1(设置显示时间) 136 137该示例通过showTime、useMilitaryTime、dateTimeOptions设置显示时间。 138 139```ts 140// xxx.ets 141@Entry 142@Component 143struct DatePickerDialogExample { 144 selectedDate: Date = new Date("2010-1-1") 145 146 build() { 147 Column() { 148 Button("DatePickerDialog") 149 .margin(20) 150 .onClick(() => { 151 this.getUIContext().showDatePickerDialog({ 152 start: new Date("2000-1-1"), 153 end: new Date("2100-12-31"), 154 selected: this.selectedDate, 155 showTime: true, 156 useMilitaryTime: false, 157 dateTimeOptions: { hour: "numeric", minute: "2-digit" }, 158 onDateAccept: (value: Date) => { 159 // 通过Date的setFullYear方法设置按下确定按钮时的日期,这样当弹窗再次弹出时显示选中的是上一次确定的日期 160 this.selectedDate = value 161 console.info("DatePickerDialog:onDateAccept()" + value.toString()) 162 }, 163 onCancel: () => { 164 console.info("DatePickerDialog:onCancel()") 165 }, 166 onDateChange: (value: Date) => { 167 console.info("DatePickerDialog:onDateChange()" + value.toString()) 168 }, 169 onDidAppear: () => { 170 console.info("DatePickerDialog:onDidAppear()") 171 }, 172 onDidDisappear: () => { 173 console.info("DatePickerDialog:onDidDisappear()") 174 }, 175 onWillAppear: () => { 176 console.info("DatePickerDialog:onWillAppear()") 177 }, 178 onWillDisappear: () => { 179 console.info("DatePickerDialog:onWillDisappear()") 180 } 181 }) 182 }) 183 }.width('100%') 184 } 185} 186``` 187 188 189 190### 示例2(自定义样式) 191 192该示例通过配置disappearTextStyle、textStyle、selectedTextStyle、acceptButtonStyle、cancelButtonStyle实现了自定义文本以及按钮样式。 193 194```ts 195// xxx.ets 196@Entry 197@Component 198struct DatePickerDialogExample { 199 selectedDate: Date = new Date("2010-1-1") 200 201 build() { 202 Column() { 203 Button("DatePickerDialog") 204 .margin(20) 205 .onClick(() => { 206 this.getUIContext().showDatePickerDialog({ 207 start: new Date("2000-1-1"), 208 end: new Date("2100-12-31"), 209 selected: this.selectedDate, 210 disappearTextStyle: { color: '#297bec', font: { size: '20fp', weight: FontWeight.Bold } }, 211 textStyle: { color: Color.Black, font: { size: '18fp', weight: FontWeight.Normal } }, 212 selectedTextStyle: { color: Color.Blue, font: { size: '26fp', weight: FontWeight.Regular } }, 213 acceptButtonStyle: { 214 type: ButtonType.Normal, 215 style: ButtonStyleMode.NORMAL, 216 role: ButtonRole.NORMAL, 217 fontColor: 'rgb(81, 81, 216)', 218 fontSize: '26fp', 219 fontWeight: FontWeight.Bolder, 220 fontStyle: FontStyle.Normal, 221 fontFamily: 'sans-serif', 222 backgroundColor: '#A6ACAF', 223 borderRadius: 20 224 }, 225 cancelButtonStyle: { 226 type: ButtonType.Normal, 227 style: ButtonStyleMode.NORMAL, 228 role: ButtonRole.NORMAL, 229 fontColor: Color.Blue, 230 fontSize: '16fp', 231 fontWeight: FontWeight.Normal, 232 fontStyle: FontStyle.Italic, 233 fontFamily: 'sans-serif', 234 backgroundColor: '#50182431', 235 borderRadius: 10 236 }, 237 onDateAccept: (value: Date) => { 238 // 通过Date的setFullYear方法设置按下确定按钮时的日期,这样当弹窗再次弹出时显示选中的是上一次确定的日期 239 this.selectedDate = value 240 console.info("DatePickerDialog:onDateAccept()" + value.toString()) 241 }, 242 onCancel: () => { 243 console.info("DatePickerDialog:onCancel()") 244 }, 245 onDateChange: (value: Date) => { 246 console.info("DatePickerDialog:onDateChange()" + value.toString()) 247 }, 248 onDidAppear: () => { 249 console.info("DatePickerDialog:onDidAppear()") 250 }, 251 onDidDisappear: () => { 252 console.info("DatePickerDialog:onDidDisappear()") 253 }, 254 onWillAppear: () => { 255 console.info("DatePickerDialog:onWillAppear()") 256 }, 257 onWillDisappear: () => { 258 console.info("DatePickerDialog:onWillDisappear()") 259 } 260 }) 261 }) 262 }.width('100%') 263 } 264} 265``` 266 267 268 269> **说明:** 270> 271> 如需完全自定义实现日期滑动选择器弹窗,可以通过先使用[自定义弹窗 (CustomDialog)](ts-methods-custom-dialog-box.md),然后使用[DatePicker组件](ts-basic-components-datepicker.md)来实现。 272 273### 示例3(悬停态弹窗) 274 275该示例展示了在折叠屏悬停态下设置dialog布局区域的效果。 276 277```ts 278@Entry 279@Component 280struct DatePickerDialogExample { 281 selectedDate: Date = new Date("2010-1-1"); 282 283 build() { 284 Column() { 285 Button("DatePickerDialog") 286 .margin(20) 287 .onClick(() => { 288 this.getUIContext().showDatePickerDialog({ 289 start: new Date("2000-1-1"), 290 end: new Date("2100-12-31"), 291 selected: this.selectedDate, 292 showTime: true, 293 useMilitaryTime: false, 294 disappearTextStyle: { color: Color.Pink, font: { size: '22fp', weight: FontWeight.Bold }}, 295 textStyle: { color: '#ff00ff00', font: { size: '18fp', weight: FontWeight.Normal }}, 296 selectedTextStyle: { color: '#ff182431', font: { size: '14fp', weight: FontWeight.Regular }}, 297 onDateAccept: (value: Date) => { 298 // 通过Date的setFullYear方法设置按下确定按钮时的日期,这样当弹窗再次弹出时显示选中的是上一次确定的日期 299 this.selectedDate = value; 300 console.info("DatePickerDialog:onDateAccept()" + value.toString()); 301 }, 302 onCancel: () => { 303 console.info("DatePickerDialog:onCancel()"); 304 }, 305 onDateChange: (value: Date) => { 306 console.info("DatePickerDialog:onDateChange()" + value.toString()); 307 }, 308 onDidAppear: () => { 309 console.info("DatePickerDialog:onDidAppear()"); 310 }, 311 onDidDisappear: () => { 312 console.info("DatePickerDialog:onDidDisappear()"); 313 }, 314 onWillAppear: () => { 315 console.info("DatePickerDialog:onWillAppear()"); 316 }, 317 onWillDisappear: () => { 318 console.info("DatePickerDialog:onWillDisappear()"); 319 }, 320 enableHoverMode: true, 321 hoverModeArea: HoverModeAreaType.TOP_SCREEN 322 }) 323 }) 324 }.width('100%') 325 } 326} 327``` 328 329 330 331### 示例4(设置弹窗位置) 332 333该示例通过alignment、offset设置弹窗的位置。 334 335```ts 336// xxx.ets 337@Entry 338@Component 339struct DatePickerDialogExample { 340 selectedDate: Date = new Date("2010-1-1") 341 342 build() { 343 Column() { 344 Button("DatePickerDialog") 345 .margin(20) 346 .onClick(() => { 347 this.getUIContext().showDatePickerDialog({ 348 start: new Date("2000-1-1"), 349 end: new Date("2100-12-31"), 350 selected: this.selectedDate, 351 alignment: DialogAlignment.Center, 352 offset: { dx: 20, dy: 0 }, 353 onDateAccept: (value: Date) => { 354 // 通过Date的setFullYear方法设置按下确定按钮时的日期,这样当弹窗再次弹出时显示选中的是上一次确定的日期 355 this.selectedDate = value 356 console.info("DatePickerDialog:onDateAccept()" + value.toString()) 357 } 358 }) 359 }) 360 }.width('100%') 361 } 362} 363``` 364 365 366 367### 示例5(设置遮蔽区) 368 369该示例通过maskRect设置遮蔽区。 370 371```ts 372// xxx.ets 373@Entry 374@Component 375struct DatePickerDialogExample { 376 selectedDate: Date = new Date("2010-1-1") 377 378 build() { 379 Column() { 380 Button("DatePickerDialog") 381 .margin(20) 382 .onClick(() => { 383 this.getUIContext().showDatePickerDialog({ 384 start: new Date("2000-1-1"), 385 end: new Date("2100-12-31"), 386 selected: this.selectedDate, 387 maskRect: { 388 x: 30, 389 y: 60, 390 width: '100%', 391 height: '60%' 392 }, 393 onDateAccept: (value: Date) => { 394 // 通过Date的setFullYear方法设置按下确定按钮时的日期,这样当弹窗再次弹出时显示选中的是上一次确定的日期 395 this.selectedDate = value 396 console.info("DatePickerDialog:onDateAccept()" + value.toString()) 397 } 398 }) 399 }) 400 }.width('100%') 401 } 402} 403``` 404 405 406 407### 示例6(设置弹窗背板) 408 409该示例通过backgroundColor、backgroundBlurStyle、shadow设置弹窗背板。 410 411```ts 412// xxx.ets 413@Entry 414@Component 415struct DatePickerDialogExample { 416 selectedDate: Date = new Date("2010-1-1") 417 418 build() { 419 Column() { 420 Button("DatePickerDialog") 421 .margin(20) 422 .onClick(() => { 423 this.getUIContext().showDatePickerDialog({ 424 start: new Date("2000-1-1"), 425 end: new Date("2100-12-31"), 426 selected: this.selectedDate, 427 backgroundColor: 'rgb(204, 226, 251)', 428 backgroundBlurStyle: BlurStyle.NONE, 429 shadow: ShadowStyle.OUTER_FLOATING_SM, 430 onDateAccept: (value: Date) => { 431 // 通过Date的setFullYear方法设置按下确定按钮时的日期,这样当弹窗再次弹出时显示选中的是上一次确定的日期 432 this.selectedDate = value 433 console.info("DatePickerDialog:onDateAccept()" + value.toString()) 434 } 435 }) 436 }) 437 }.width('100%') 438 } 439} 440``` 441 442 443 444### 示例7(设置公历农历) 445 446该示例通过lunar、lunarSwitch设置弹窗显示公历或农历。 447 448```ts 449// xxx.ets 450@Entry 451@Component 452struct DatePickerDialogExample { 453 selectedDate: Date = new Date("2010-1-1") 454 455 build() { 456 Column() { 457 Button("DatePickerDialog") 458 .margin(20) 459 .onClick(() => { 460 this.getUIContext().showDatePickerDialog({ 461 start: new Date("2000-1-1"), 462 end: new Date("2100-12-31"), 463 selected: this.selectedDate, 464 lunar: false, 465 onDateAccept: (value: Date) => { 466 // 通过Date的setFullYear方法设置按下确定按钮时的日期,这样当弹窗再次弹出时显示选中的是上一次确定的日期 467 this.selectedDate = value 468 console.info("DatePickerDialog:onDateAccept()" + value.toString()) 469 } 470 }) 471 }) 472 473 Button("Lunar DatePickerDialog") 474 .margin(20) 475 .onClick(() => { 476 this.getUIContext().showDatePickerDialog({ 477 start: new Date("2000-1-1"), 478 end: new Date("2100-12-31"), 479 selected: this.selectedDate, 480 lunar: true, 481 lunarSwitch: true, 482 onDateAccept: (value: Date) => { 483 this.selectedDate = value 484 console.info("DatePickerDialog:onDateAccept()" + value.toString()) 485 } 486 }) 487 }) 488 }.width('100%') 489 } 490} 491``` 492 493 494 495### 示例8(设置显示月、日列) 496 497该示例通过配置mode参数实现显示月、日两列。 498 499```ts 500// xxx.ets 501@Entry 502@Component 503struct DatePickerDialogExample { 504 selectedDate: Date = new Date("2010-1-1") 505 506 build() { 507 Column() { 508 Button("DatePickerDialog") 509 .margin(20) 510 .onClick(() => { 511 this.getUIContext().showDatePickerDialog({ 512 start: new Date("2000-1-1"), 513 end: new Date("2100-12-31"), 514 selected: this.selectedDate, 515 mode: DatePickerMode.MONTH_AND_DAY, 516 onDateAccept: (value: Date) => { 517 // 通过Date的setFullYear方法设置按下确定按钮时的日期,这样当弹窗再次弹出时显示选中的是上一次确定的日期 518 this.selectedDate = value 519 console.info("DatePickerDialog:onDateAccept()" + value.toString()) 520 } 521 }) 522 }) 523 }.width('100%') 524 } 525} 526``` 527 528 529