Ionic Native Date Picker 在 Android 上不起作用



我正在使用来自IonicNative页面的Cordova插件。

我使用两种不同的选择,一种选择日期,另一种选择 时间。两者都在iOS上运行良好,但是对于Android,我有两个问题。

在日期选择
  1. 器上,没有界限,因此无法选择旧日期,即使我确实在控制器中传递了它。

    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.todaythis.maxDay也是如此

我尝试使用javascript的Date()但它没有改变任何东西,在Android上,我仍然可以选择我想要的任何日期

  1. 更重要的问题是时间选择器根本无法在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 时间的 int,但它只是更改了错误消息。有人知道该怎么做吗??

我有一个有用的答案:)

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 上您需要传递一个日期

我说这是一个错误,因为"ionic"和"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

最新更新