插件
日期时间选择器
@nativescript/datetimepicker
一个提供 UI 元素 DatePickerField
、TimePickerField
和 DateTimePickerFields
用于选择日期和时间的插件。DatePickerField
和 TimePickerField
组件扩展了 TextField 视图,而 DateTimePickerFields
扩展了 GridLayout 布局容器,该容器包含 DatePickerField
和 TimePickerField
组件的实例。还有一个 DateTimePicker
类,它提供了静态方法 pickDate()
和 pickTime()
,可以调用它们来显示与字段相同的对话框选择器。
目录
安装
npm install @nativescript/datetimepicker
使用 @nativescript/datetimepicker
核心
使用 Page 的
xmlns
属性注册插件命名空间,提供您的前缀(例如datetime
),并将它的值设置为插件名称。xml<Page xmlns="http://schemas.nativescript.org/tns.xsd" xmlns:datetime="@nativescript/datetimepicker" ></Page>
通过前缀访问
datePickerField
视图。xml<Page xmlns="http://schemas.nativescript.org/tns.xsd" xmlns:datetime="@nativescript/datetimepicker" > <datetime:DatePickerField hint="select date"></datetime:DatePickerField> <datetime:TimePickerField hint="select time"></datetime:TimePickerField> <datetime:DateTimePickerFields hintDate="select date" hintTime="select time" ></datetime:DateTimePickerFields> </Page>
Angular
通过将插件的
NativeScriptDateTimePickerModule
添加到包含要使用DatePickerField
的组件的模块的imports
数组中来注册插件。tsimport { NativeScriptDateTimePickerModule } from '@nativescript/datetimepicker/angular' @NgModule({ imports: [ NativeScriptCommonModule, NativeScriptDateTimePickerModule, // ... ], // ... })
在标记中按如下方式使用
DatePickerField
xml<DatePickerField hint="select date"></DatePickerField> <TimePickerField hint="select time"></TimePickerField> <DateTimePickerFields hintDate="select date" hintTime="select time" ></DateTimePickerFields>
Vue
安装插件后,在
main.ts
文件中将其注册到您的应用项目,以实现全局访问。tsimport DateTimePicker from '@nativescript/datetimepicker/vue' import Home from './components/Home.vue' const app = createApp(Home).use(DateTimePicker) app.start()
在
template
中按如下方式使用DatePickerField
xml<DatePickerField hint="select date" /> <TimePickerField hint="select time" /> <DateTimePickerFields hintDate="select date" hintTime="select time" />
Svelte
安装插件后,在 app.ts
文件中将 DateTimePickerFields
注册到您的应用。
registerNativeViewElement(
'dateTimePickerFields',
() => require('@nativescript/datetimepicker').DateTimePickerFields
)
接下来,通过添加 dateTimePickerFields
元素,在标记中使用选择器。
<dateTimePickerFields hintDate="pick a date" hintTime="pick time"></dateTimePicker>
设置选定的日期和时间
要设置 TimePickerField
的选定时间,请使用 time
属性。
<TimePickerField time="01:00"></TimePickerField>
DatePickerField
和 DateTimePickerFields
组件都使用 date
属性来设置它们的选定日期(以及 DateTimePickerFields
的时间)值。
<DatePickerField date="2019/02/24"></DatePickerField>
<DateTimePickerFields date="2019/02/24 01:00"></DateTimePickerFields>
更改选择器标题和按钮标签
要更改选择器弹出窗口的标题和按钮标签,请使用 pickerOkText
、pickerCancelText
和 pickerTitle
属性。
<DatePickerField
hint="tap to choose"
pickerOkText="Approve"
pickerCancelText="Reject"
pickerTitle="Confirm predefined date selection"
pickerDefaultDate="2019/05/15"
></DatePickerField>
DateTimePickerFields
还有 pickerTitleDate
用于日期选择器标题,以及 pickerTitleTime
用于时间选择器标题。
<DateTimePickerFields
hintDate="tap to choose date"
hintTime="tap to choose time"
pickerOkText="Approve"
pickerCancelText="Reject"
pickerTitleDate="Confirm predefined date selection"
pickerTitleTime="Confirm predefined time selection"
pickerDefaultDate="2019/05/15 22:00"
autoPickTime="true"
></DateTimePickerFields>
设置本地化
要本地化 DatePickerField
和 DateTimePickerFields
组件,请使用 locale
属性。
<DatePickerField locale="en_GB" hint="select date"></DatePickerField>
<!-- DateTimePickerFields -->
<DateTimePickerFields
locale="de_DE"
hintDate="datum auswählen"
hintTime="zeit wählen"
pickerOkText="Bestätigen"
pickerCancelText="Stornieren"
pickerTitleDate="Datum auswählen"
pickerTitleTime="Zeit wählen"
></DateTimePickerFields>
格式化日期和时间
除了取决于 locale
属性值的默认格式之外,您还可以添加自定义格式,其中可以包含日期/时间值的排序以及自定义文本。要自定义日期格式,请使用 dateFormat
属性。
<DatePickerField
date="2019/02/24"
dateFormat="'my date': dd-MMMM-yyyy"
></DatePickerField>
TimePickerField
将根据 iOS 设备设置中的选定区域以及 Android 设备的“使用 24 小时制”设置来确定使用 12 小时制还是 24 小时制(用于格式化字段中选定的时间以及小时微调器的值)。要更改 Android 上的默认设置,您需要使用 timeFormat
属性,要更改 iOS 上的设置,您需要使用 locale
属性。
<TimePickerField
time="16:00"
timeFormat="h:mm a"
locale="en_US"
></TimePickerField>
对于 DateTimePickerFields
选择器,使用相同的属性(dateFormat
、timeFormat
和 locale
)来进行自定义日期和时间格式。
<DateTimePickerFields
date="2019/02/24 16:00"
timeFormat="h:mm a"
locale="en_US"
></DateTimePickerFields>
设置最小日期和最大日期
要设置最小日期和最大日期,请对 DatePickerField
和 DateTimePickerFields
组件使用 minDate
和 maxDate
属性。
<DatePickerField
minDate="2020/02/02"
maxDate="2021/02/02"
hint="tap to select"
></DatePickerField>
<!-- DateTimePickerFields -->
<DateTimePickerFields
minDate="2020/02/02"
maxDate="2021/02/02"
hintDate="tap to select date"
hintTime="tap to select time"
></DateTimePickerFields>
设置 DateTimePickerFields 选择器的布局
要将选择器字段水平(默认)或垂直排列,请使用 orientation
属性。
<DateTimePickerFields
hintDate="select date"
hintTime="select time"
orientation="vertical"
></DateTimePickerFields>
使用 CSS 样式化选择器
您可以使用 CSS 来样式化 DatePickerField
和 TimePickerField
选择器。相同的样式适用于 DateTimePickerFields
组件中包含的选择器。选择器支持通过以下预定义的 CSS 类更改其颜色
date-time-picker
:选择器背景和标题文本颜色)date-time-picker-spinners
:日期/时间选择微调器的背景和文本颜色date-time-picker-buttons
:确定/取消按钮的背景和文本颜色date-time-picker-button-ok
和date-time-picker-button-cancel
:为每个按钮提供单独的样式。
注意
iOS 本机实现对按钮背景颜色的支持有限。当一个按钮被标记为取消按钮时,它的背景始终为白色,无法更改。如果您确实需要一个带有其他颜色的取消按钮,您可以通过指定的取消按钮类传递背景颜色,但是这会更改选择器布局,并将取消按钮与确定按钮一起放置,它们都将具有相同的背景颜色。
timepickerfield,
datepickerfield {
padding: 12 4;
}
timepickerfield.apply-css,
datepickerfield.apply-css {
color: #cddc39;
background-color: #00796b;
font-size: 20;
font-weight: bold;
padding: 20;
}
.date-time-picker.apply-css {
color: #00796b;
background-color: #cddc39;
}
.date-time-picker-spinners.apply-css {
color: #cddc39;
background-color: #00796b;
}
.date-time-picker-buttons.apply-css {
color: #00796b;
}
要在打开 DateTimePicker 时在运行时应用样式,您可以执行以下操作
import {
DateTimePicker,
DateTimePickerStyle,
} from '@nativescript/datetimepicker'
import { Application, View } from '@nativescript/core'
function createPicker(args: EventData) {
const dateTimePickerStyle = DateTimePickerStyle.create(args.object as any)
// This example handles styling the calendar for light and dark mode of the device settings
if (Application.systemAppearance() === 'dark') {
// style for dark mode
dateTimePickerStyle.buttonsBackgroundColor = new Color('#202125')
dateTimePickerStyle.dialogBackgroundColor = new Color('#202125')
dateTimePickerStyle.titleTextColor = new Color('#fff')
dateTimePickerStyle.buttonsTextColor = new Color('#0067a6')
dateTimePickerStyle.spinnersBackgroundColor = new Color('#202125')
dateTimePickerStyle.spinnersTextColor = new Color('#fff')
} else {
// style for light mode
dateTimePickerStyle.buttonsBackgroundColor = new Color('#fff')
dateTimePickerStyle.dialogBackgroundColor = new Color('#fff')
dateTimePickerStyle.titleTextColor = new Color('#0067a6')
dateTimePickerStyle.buttonsTextColor = new Color('#0067a6')
dateTimePickerStyle.spinnersBackgroundColor = new Color('#fff')
dateTimePickerStyle.spinnersTextColor = new Color('#0067a6')
}
DateTimePicker.pickDate(
{
context: (args.object as View)._context,
minDate: new Date((new Date() as any) - 1),
title: 'DatePicker',
okButtonText: 'Okay',
cancelButtonText: 'Cancel',
locale: 'es',
},
dateTimePickerStyle
).then((result) => {
// handle the result
})
}
手动创建自定义选择器
在内部,DatePickerField
和 TimePickerField
调用 DateTimePicker
类的 pickDate
和 pickTime
方法,它们是公开的。您可以通过手动调用这些方法来创建自定义选择器。pickDate
方法接受 DatePickerOptions,而 pickTime
方法接受 TimePickerOptions。
function onPickDateTap(args: EventData) {
const dateToday = new Date()
const dateTomorrow = new Date(
dateToday.getFullYear(),
dateToday.getMonth(),
dateToday.getDate() + 1
)
const dateNextWeek = new Date(
dateToday.getFullYear(),
dateToday.getMonth(),
dateToday.getDate() + 7
)
DateTimePicker.pickDate({
context: args.object._context,
date: dateTomorrow,
minDate: dateTomorrow,
maxDate: dateNextWeek,
okButtonText: 'OK',
cancelButtonText: 'Cancel',
title: 'choose date',
locale: 'en_GB',
}).then((selectedDate) => {
if (selectedDate) {
this.dateText = this.getFormattedDate(selectedDate)
}
})
}
function onPickTimeTap(args: EventData) {
const dateToday = new Date()
const dateTomorrow = new Date(
dateToday.getFullYear(),
dateToday.getMonth(),
dateToday.getDate() + 1
)
dateTomorrow.setHours(8)
dateTomorrow.setMinutes(0)
DateTimePicker.pickTime({
context: args.object._context,
time: dateTomorrow,
okButtonText: 'OK',
cancelButtonText: 'Cancel',
title: 'choose time',
locale: 'en_GB',
is24Hours: true,
}).then((selectedTime) => {
if (selectedTime) {
this.timeText = this.getFormattedTime(selectedTime)
}
})
}
API
DatePickerField
属性 | 类型 | 描述 |
---|---|---|
date | 日期 | 选择器字段当前显示的日期。在标记中使用时,提供的字符串将传递给 Date 构造函数 以创建一个新的 Date 对象。 |
minDate | 日期 | 选择器字段可以选择的最早日期。 |
maxDate | 日期 | 选择器字段可以选择的最晚日期。 |
locale | 字符串 | 用于本地化月份名称以及微调器顺序的区域设置标识符(使用 en_GB 时,第一个微调器是日期,使用 en_US 时,第一个微调器是月份)(默认值基于设备的区域设置)。 |
hint | 字符串 | 获取或设置提示文本。提示是在 date 为 null 时显示在字段中的文本。 |
dateFormat | 字符串 | 用于选择器字段中文本的格式(在 android 上用作 SimpleDateFormat 的模式,在 iOS 上用作 NSDateFormatter 的 dateFormat,默认值由 locale 属性的当前值生成)。 |
pickerTitle | 字符串 | 将显示为选择器标题的文本,默认值为 undefined。 |
pickerOkText | 字符串 | 选择器的确认按钮的文本(默认值为 iOS 上的 OK ,Android 上的 OK 的本地化版本(基于设备的区域设置))。 |
pickerCancelText | 字符串 | 选择器的取消按钮的文本(默认值为 iOS 上的 Cancel ,Android 上的 Cancel 的本地化版本(基于设备的区域设置))。 |
TimePickerField
属性 | 类型 | 描述 |
---|---|---|
time | 日期 | 选择器字段当前显示的时间。如果它以 ISO 8601 格式,它将传递给 JS Date 构造函数。 |
locale | 字符串 | 获取或设置用于在字段中显示日期的区域设置,以及选择器。默认值为 undefined ,这意味着格式将基于设备的设置。 |
hint | 字符串 | 获取或设置提示文本。提示是在 time 为 null 时显示在字段中的文本。 |
timeFormat | 字符串 | 选择器字段中使用的文本格式(在 Android 上用作 SimpleDateFormat 的模式,在 iOS 上用作 NSDateFormatter 的 dateFormat,默认由 locale 属性的当前值生成),该格式也将用于 Android 来确定选择器是使用 12 小时制还是 24 小时制。 |
pickerTitle | 字符串 | 将显示为选择器标题的文本,默认值为 undefined。 |
pickerOkText | 字符串 | 选择器确认按钮的文本(默认在 iOS 上为 OK,在 Android 上为 OK 的本地化版本(基于设备的区域设置)。 |
pickerCancelText | 字符串 | 选择器取消按钮的文本(默认在 iOS 上为 Cancel,在 Android 上为 Cancel 的本地化版本(基于设备的区域设置)。 |
DateTimePickerFields
属性 | 类型 | 描述 |
---|---|---|
date | 日期 | 选择器字段当前显示的日期。 |
minDate | 日期 | 获取或设置最小日期。请注意,此属性仅影响日期部分。 |
maxDate | 日期 | 获取或设置最大日期。请注意,此属性仅影响日期部分。 |
locale | 字符串 | 获取或设置用于在字段和选择器中显示日期的区域设置。 默认值为 undefined ,这意味着格式将基于设备的设置。请注意,更改区域设置不会影响 pickerOkText 、pickerCancelText 和 pickerTitle 或 hint 属性。 |
dateFormat | 字符串 | 选择器字段中使用的文本格式(在 Android 上用作 SimpleDateFormat 的模式,在 iOS 上用作 NSDateFormatter 的 dateFormat,默认由 locale 属性的当前值生成)。 |
timeFormat | 字符串 | 选择器字段中使用的文本格式(在 Android 上用作 SimpleDateFormat 的模式,在 iOS 上用作 NSDateFormatter 的 dateFormat,默认由 locale 属性的当前值生成),该格式也将用于 Android 来确定选择器是使用 12 小时制还是 24 小时制。 |
pickerTitleDate | 字符串 | 当点击日期部分时,将显示为选择器标题的文本。 |
pickerTitleTime | 字符串 | 当点击时间部分时,将显示为选择器标题的文本。 |
pickerOkText | 字符串 | 选择器确认按钮的文本(默认在 iOS 上为 OK,在 Android 上为 OK 的本地化版本(基于设备的区域设置)。 |
pickerCancelText | 字符串 | 选择器 Cancel 按钮的文本(默认在 iOS 上为 Cancel ,在 Android 上为 Cancel 的本地化版本(基于设备的区域设置)。 |
autoPickTime | boolean | 指示是否应在日期部分选择日期后立即为时间部分分配值的布尔值。默认为 false 。 |
orientation | 'horizontal' | 'vertical' | 指示日期和时间部分将如何排列的值,默认值为“horizontal”,这意味着它们将位于同一行。 |
hintDate | 字符串 | 当 date 为 null 时,在日期部分显示的文本。 |
hintTime | 字符串 | 当 date 为 null 时,在时间部分显示的文本。 |
DateTimePicker Class
方法 | 返回类型 | 描述 |
---|---|---|
pickDate(options: DatePickerOptions, style?: DateTimePickerStyle) | Promise<Date> | 从使用提供的选项初始化并使用可选提供的样式设置样式的对话框选择器中选择日期。 |
pickTime(options: TimePickerOptions, style?: DateTimePickerStyle) | Promise<Date> | 从使用提供的选项初始化并使用可选提供的样式设置样式的对话框选择器中选择时间。 |
DatePickerOptions
属性 | 类型 | 描述 |
---|---|---|
context | any | 视图的上下文。从视图实例的 _context 属性获取。 |
date | 日期 | 可选:将在选择器中显示的日期(如果未提供,选择器将显示今天)。 |
minDate | 日期 | 可选:可以选择的最早日期。 |
maxDate | 日期 | 可选:可以选择的最晚日期。 |
locale | 字符串 | 可选:用于本地化月份名称和 AM/PM 文本的区域设置标识符。 |
title | 字符串 | 可选:将显示为选择器标题的文本。 |
okButtonText | 字符串 | 可选:选择器确认按钮的文本(默认在 iOS 上为 OK,在 Android 上为 OK 的本地化版本(基于设备的区域设置)。 |
cancelButtonText | 字符串 | 可选:选择器取消按钮的文本(默认在 iOS 上为 Cancel,在 Android 上为 Cancel 的本地化版本(基于设备的区域设置)。 |
TimePickerOptions
属性 | 类型 | 描述 |
---|---|---|
context | any | 视图的上下文。从视图实例的 _context 属性获取。 |
time | 日期 | 可选:将在选择器中显示的时间(如果未提供,选择器将显示现在)。 |
is24Hours | boolean | 可选:此值仅在 Android 上使用,用于确定选择器是使用 12 小时制还是 24 小时制。 |
locale | 字符串 | 可选:用于本地化月份名称和 AM/PM 文本的区域设置标识符。 |
title | 字符串 | 可选:将显示为选择器标题的文本。 |
okButtonText | 字符串 | 可选:选择器确认按钮的文本(默认在 iOS 上为 OK,在 Android 上为 OK 的本地化版本(基于设备的区域设置)。 |
cancelButtonText | 字符串 | 可选:选择器取消按钮的文本(默认在 iOS 上为 Cancel ,在 Android 上为 Cancel 的本地化版本(基于设备的区域设置)。 |
DateTimePickerStyle
属性 | 类型 | 描述 |
---|---|---|
titleTextColor | 颜色 | 用于标题文本的颜色。 |
dialogBackgroundColor | 颜色 | 用作对话框选择器背景的颜色。 |
spinnersTextColor | 颜色 | 用于日期/时间选择器文本的颜色。 |
spinnersBackgroundColor | 颜色 | 用作日期/时间选择器背景的颜色。 |
buttonsTextColor | 颜色 | 用于确定/取消按钮文本的颜色。 |
buttonsBackgroundColor | 颜色 | 用作确定/取消按钮背景的颜色。 |
buttonOkTextColor | 颜色 | 用于确定按钮文本的颜色。 |
buttonOkBackgroundColor | 颜色 | 用作确定按钮背景的颜色。 |
buttonCancelTextColor | 颜色 | 用于取消按钮文本的颜色。 |
buttonCancelBackgroundColor | 颜色 | 用作取消按钮背景的颜色。 |
create(view: View) | DateTimePickerStyle | 根据提供的任何 CSS 创建样式。参数是一个具有正确设置的 CSS 类名称的视图。 |
License
Apache License Version 2.0