我有一个使用JQuery Mobile& amp; PhoneGap,这段代码在iOS上不起作用,但对于android来说效果很好。我也在使用moment.js
日期格式=星期四2015年9月17日00:00:00 GMT-0400(美国东部时间)
var selecdate = new Date(date).getTime(); //Get the Unix time based on date selected from calender
var sDate = moment(selecdate); //pass the date to the moment.js library
var aDate = moment();//Get current date
var PTime = sDate.diff(aDate, 'days');//Calculate the different between current date and selected date using moment.js library.
if (PTime < 0){ //If the selected date is before today return false.
alert("Select a Future Date");
return false;
}
有人可以帮忙吗?不知道为什么这个简单的代码在iOS中不起作用。在Android中,如果用户选择今天之前的任何日期PTime将小于O并且它会提醒用户在iOS中“选择未来日期”它完全忽略if语句。
答案 0 :(得分:1)
ECMAScript规范未定义new Date(dateObject)
的行为。在大多数情况下,它等同于new Date(dateObject.valueOf())
,相当于原始dateObject
。我并非100%肯定,但有些环境(例如较旧的Android设备)可能没有实现这一点。如果没有实现,您的代码可能会在第一行停止。
此外,它完全没必要。你可以这样做:
if (moment(date).isBefore(moment().startOf('day'))) {
alert("Select a Future Date");
return false;
}
或者你甚至可以毫不犹豫地这样做:
function getStartOfToday() {
var dt = new Date();
dt.setHours(0);
dt.setMinutes(0);
dt.setSeconds(0);
dt.setMilliseconds(0);
// Handle browser-specific DST edge case when day starts at 1:00 AM
// Ex: Firefox on Oct 18, 2015 in Brazil
if (dt.getHours() !== 0) {
dt.SetTime(dt.getTime() + 36e5);
}
return dt;
}
var today = getStartOfToday();
if (date < today) {
alert("Select a Future Date");
return false;
}