我正在使用IonicNative页面的Cordova插件。
我使用两个不同的选择,一个选择日期,另一个选择时间。两者都可以在iOS上运行良好,但在Android上我有两个问题。
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上我仍然可以选择我想要的任何日期
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时间,但它只是更改了错误消息。谁知道该怎么办?
我有一个有用的答案:)
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”必须在一个完美的世界中进行解析。
因为它不'这个技巧可以解决问题。
好的,所以我通过完全删除cordova插件解决了它,而是使用Ionic自己的组件ion-datetime
来解决这两种情况。现在它在Android上显示滑块而不是日历,但我很好。
同时添加限制,如最小,最大日期很容易,动态可行,并在Ionic Docs上有详细记录
要使用ionic-native/date-picker
插件,您需要在设备上运行项目,因为插件使用了cordova。如果您使用ionic serve
来运行项目,您在控制台中看到如下消息:
Ionic Native: tried calling DatePicker.show, but Cordova is not available. Make sure to a) run in a real device or simulator and b) include cordova.js in your index.html