Android Ionic2日历现在在设备上出现故障
我正在开发一款基于Ionic 4的应用程序,带有Angular 8,但出现了一个奇怪的情况。我正在使用 它似乎类似于。。。你会看到,我在那里发表了评论,询问他们是如何解决的,但毫无结果 它在使用ionic-serve的浏览器上运行良好,在我的android设备上运行良好(我还没有使用iOS)。 上周我的手机有一个andoid更新,从那以后,日历页面就不再工作了。 我已经剥离了大部分代码,并将其简化到现在(几乎)可以工作的程度,但我必须删除datasource对象。 这让我相信数据源中的数据有问题,我以前发现数据源的格式不正确。然而,我不确定这是否是问题所在。 startTime和EndTime来自服务器,并由ISO字符串转换而成,如下所示:Android Ionic2日历现在在设备上出现故障,android,angular,cordova,ionic-framework,Android,Angular,Cordova,Ionic Framework,我正在开发一款基于Ionic 4的应用程序,带有Angular 8,但出现了一个奇怪的情况。我正在使用 它似乎类似于。。。你会看到,我在那里发表了评论,询问他们是如何解决的,但毫无结果 它在使用ionic-serve的浏览器上运行良好,在我的android设备上运行良好(我还没有使用iOS)。 上周我的手机有一个andoid更新,从那以后,日历页面就不再工作了。 我已经剥离了大部分代码,并将其简化到现在(几乎)可以工作的程度,但我必须删除datasource对象。 这让我相信数据源中的数据有问题
fixAppointmentTimesFromServer(appointment: Appointment) {
appointment.startTime = new Date(appointment.StartTimeServer);
appointment.endTime = new Date(appointment.EndTimeServer);
}
this.userService.appointments.forEach( appt => {
console.log(appt.startTime);
console.log(typeof (appt.startTime));
console.log(appt.endTime);
console.log(typeof (appt.endTime));
});
如果我注销Appoints数组中的对象类型,如下所示:
fixAppointmentTimesFromServer(appointment: Appointment) {
appointment.startTime = new Date(appointment.StartTimeServer);
appointment.endTime = new Date(appointment.EndTimeServer);
}
this.userService.appointments.forEach( appt => {
console.log(appt.startTime);
console.log(typeof (appt.startTime));
console.log(appt.endTime);
console.log(typeof (appt.endTime));
});
它将开始/结束时间显示为字符串,所以我想知道这是否是问题所在,或者这是否只是JS日期对象的更多谜团
或者,如果有人可以告诉我如何实际查找并进入日历模块进行调试,那么这可能会有所帮助
我添加了一个额外的:
this.platform.ready().then( res => {
...
在ngOninit()的开始处
整个开始/结束时间的事情可能只是一条红鲱鱼。。。
有什么想法吗?谢谢我在这里回答我自己的问题,因为我不想让其他人有和我一样的问题 我为ionic2日历安排日期的方式是不够的(显然),因为它需要一个基于毫秒的日期对象才能正常工作。不同的浏览器版本似乎运行方式不同 因此,我现在从服务器确定日期的方法如下:
fixAppointmentTimesFromServer(appointment: Appointment) {
const start = new Date(appointment.StartTimeServer);
const end = new Date(appointment.EndTimeServer);
appointment.startTime = new Date(Date.UTC(start.getFullYear(), start.getMonth(),
start.getDate(), start.getHours(), start.getMinutes()));
appointment.endTime = new Date(Date.UTC(end.getFullYear(), end.getMonth(), end.getDate(), end.getHours(), end.getMinutes()));
}
这将首先转换为字符串,然后再次转换为基于UTC(毫秒)的日期对象。这确实有效
但要注意一点:
我发现,当我没有从服务器获取数据,但使用已从Ionic存储中转换的数据时,它再次崩溃。这需要我在从存储中获取数据时重新转换数据。所以,对于JS来说,这并不是什么“有趣的服务器约会”,而且是一个完美的例子,说明了Javascript实际上是多么的完美 你在真正的安卓设备上试过哪个安卓版本?我的手机现在在安卓9上。Tbh,不知道以前是什么。操作系统中是否有一些我应该注意的变化?