moment.js日期格式在iOS

时间:2015-09-15 16:26:52

标签: jquery date momentjs

我有一个使用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语句。

1 个答案:

答案 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;
}