获取用户选择日期的最后 7 天

get last 7 days when user picks up a date

我有一个日期时间选择器,用户可以在其中选择一个日期,我的要求是我需要在他选择的日期之间相差 7 天。

例如,

如果用户选择了 2017-03-01,那么我需要从 2017-03-01 开始的最后 7 天并且不是当前日期

我在这里检查的所有答案都是基于与今天相差的天数。

有人可以帮我吗?

$("#dateTimePickerIdWhereUserSelectsHisDate").val() - (7 * 24 * 60 * 60 * 1000);

这是其中一个答案,但没有用。

我怎样才能做到这一点?

试试这个
SelectDateTime 会给你选择的日期
604800000 是以毫秒为单位的 7 天
prevDate 将为您提供最后 7 天的日期

$("#startDate").on("dp.change", function(e) {
    if (e.oldDate != null) {
        if (e.date.format('D') != e.oldDate.format('D')) {

          var selectDateTime = e.date["_d"].getTime();
          var prevDateTImeMili = selectDateTime - 604800000;
            var  prevDate = msToDateTime(prevDateTImeMili)
          $('#startDate').data("DateTimePicker").hide();
        }
    }
});

msToDateTime 是一个将毫秒转换为 DateTime

的函数
function msToDateTime(s) {
    Number.prototype.padLeft = function(base,chr){
           var  len = (String(base || 10).length - String(this).length)+1;
           return len > 0? new Array(len).join(chr || '0')+this : this;
    }
    if(s != null){
        s = new Date(s);
//      var d = new Date(s);
//      var d = new Date(s.getTime()+s.getTimezoneOffset()*60*1000+timeConversionToMilliseconds(sessionStorage.getItem("accounttimezone").split('+')[1]+':00'))
        var d = new Date(s.getTime()+(s.getTimezoneOffset()*60*1000)+ (330 *60*1000));
        dformat = [ d.getFullYear(),
                    (d.getMonth()+1).padLeft(),
                    d.getDate().padLeft()].join('-')+
                    ' ' +
                  [ d.getHours().padLeft(),
                    d.getMinutes().padLeft(),
                    d.getSeconds().padLeft()].join(':');
         return dformat;    
    }else{
        return " ";
    }
}

function getNDaysBefore(dateString, numberOfDaysBefore) {
    let startingDate = new Date(dateString).getTime();
    let datesArray = [],
        daysCounter = 0,
        day = 1000 * 60 * 60 * 24;
    while (daysCounter < numberOfDaysBefore + 1) {
        let newDateBeforeStaring = startingDate - day * daysCounter;
        datesArray.push(new Date(newDateBeforeStaring));
        daysCounter++;
    }
    return datesArray;
}
var dateString = "2016-03-01";
alert(getNDaysBefore(dateString,7));

使用这种函数,您可以获得给定日期之前的任意 N 天作为 Date 对象数组