我正在从IonicNative页使用Cordova插件。
我使用两种不同的选择,一种选择日期,另一种选择
时间。两者都可以在iOS上正常工作,但在Android上却有两个问题。
在Date Picker上没有界限,因此即使我确实在控制器中传递了旧日期也无法选择。
showDatePicker(){
this.datePicker.show({
date: this.dateChosen,
mode: 'date',
minDate: this.today,
maxDate: this.maxDay,
allowOldDates: false }).then(
date => {
this.dateChosen = m(date);
},
err => alert('Error occurred while getting date: ' + err)
);}
我使用moment.js生成日期/时间,所以
this.dateChose = moment();
它不是问题的根源,与
this.today
和this.maxDay
相同我尝试使用javascript的
Date()
,但是它没有任何改变,在Android上,我仍然可以选择所需的日期更重要的问题是,Time Picker根本无法在Android上运行
showTimePicker(){
this.datePicker.show({
date: this.timeChosen,
mode: 'time',
is24Hour: true,
minuteInterval: 15,
allowOldDates: false }).then(
date => {
this.timeChosen = m(date);
},
err => alert('Error occurred while getting date: ' + err)
);}
在iOS上,我没有问题,并且工作正常,但是在Android上,错误消息为
For input string "2017-07-10T13:10.24.213Z"
时进入错误状态。我更改了输入以将其传递给unix时间,但是它只是更改了err消息。有人知道该怎么办吗?
最佳答案
我有一个有用的答案:)
import { DatePicker } from '@ionic-native/date-picker'
//...
constructor(public datePicker: DatePicker) {}
//...
public toPickDateTime() {
let minDays = 2
let maxDays = 365
this.datePicker
.show({
mode: 'datetime',
date: this.getNowAndAdd(2, true),
minDate: this.getNowAndAdd(2),
maxDate: this.getNowAndAdd(5),
is24Hour: true,
androidTheme: this.datePicker.ANDROID_THEMES.THEME_HOLO_DARK,
})
.then(
date => console.log(date),
err => console.log(err)
);
}
private getNowAndAdd(nbDays, forceDate = false): any
{
var date = new Date(new Date().getTime() + (nbDays * 24 * 3600 * 1000))
return (this.platform.is("android") && !forceDate) ? date.getTime() : date
}
您需要知道minDate和maxDate是“错误的”,并且没人在乎^^。
在android上,您需要传递一个整数,而在ios上,您需要传递一个日期
我说这是一个错误,因为“离子”和“科尔多瓦”必须在一个完美的世界中进行此解析。
由于没有,这个技巧可以解决问题。
关于cordova - Ionic Native Date Picker在Android上不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45013041/