在用户选择日期时获得最近7天

时间:2017-06-27 11:56:16

标签: javascript bootstrap-datetimepicker days date-difference

我有一个datetimepicker,用户选择了一个日期,我的要求是他在所选日期之间需要7天的差异。

例如,

如果用户选择2017-03-01所以我需要2017-03-01的最后7天和不是当前日期

我在这里查看的所有答案均基于今天的天数差异。

有人可以帮助我吗?

<div contenteditable class="container">
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis et porta ante, eu posuere elit. Nunc suscipit augue nec dolor sagittis, in ultricies mi semper. Sed et mi eget nibh rutrum tristique at in sapien. Nunc dolor mauris, tempor vel sem ac, imperdiet
    maximus metus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam sit amet elit vehicula, molestie justo id, ornare massa. Vivamus ullamcorper dapibus orci eget auctor. Nunc feugiat leo sed semper placerat.
    Maecenas ut mauris in odio fringilla semper at at dolor. Pellentesque dictum ultricies accumsan.</p>
  <figure class="center">
    <picture>
      <a>
        <img class="img">
      </a>
    </picture>
    <figcaption class="caption">
      <small>
        <em class="legend">FIG 1 - center</em>
      </small>
    </figcaption>
  </figure>
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis et porta ante, eu posuere elit. Nunc suscipit augue nec dolor sagittis, in ultricies mi semper. Sed et mi eget nibh rutrum tristique at in sapien. Nunc dolor mauris, tempor vel sem ac, imperdiet
    maximus metus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam sit amet elit vehicula, molestie justo id, ornare massa. Vivamus ullamcorper dapibus orci eget auctor. Nunc feugiat leo sed semper placerat.
    Maecenas ut mauris in odio fringilla semper at at dolor. Pe
    <figure class="left">
      <picture>
        <a>
          <img class="img">
        </a>
      </picture>
      <figcaption class="caption">
        <small>
        <em class="legend">FIG 2 - left</em>
      </small>
      </figcaption>
    </figure>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis et porta ante, eu posuere elit. Nunc suscipit augue nec dolor sagittis, in ultricies mi semper. Sed et mi eget nibh rutrum tristique at in sapien. Nunc dolor mauris, tempor vel sem ac,
      imperdiet maximus metus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam sit amet elit vehicula, molestie justo id, ornare massa. Vivamus ullamcorper dapibus orci eget auctor. Nunc feugiat leo sed semper
      placerat. Maecenas ut mauris in odio fringilla semper at at dolor. Pellentesque dictum ultricies accumsan.</p>
    <figure class="right">
      <picture>
        <a>
          <img class="img">
        </a>
      </picture>
      <figcaption class="caption">
        <small>
        <em class="legend">FIG 3 - right</em>
      </small>
      </figcaption>
    </figure>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis et porta ante, eu posuere elit. Nunc suscipit augue nec dolor sagittis, in ultricies mi semper. Sed et mi eget nibh rutrum tristique at in sapien. Nunc dolor mauris, tempor vel sem ac,
      imperdiet maximus metus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam sit amet elit vehicula, molestie justo id, ornare massa. Vivamus ullamcorper dapibus orci eget auctor. Nunc feugiat leo sed semper
      placerat. Maecenas ut mauris in odio fringilla semper at at dolor. Pellentesque dictum ultricies accumsan.</p>
</div>

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

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

试试这个
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 " ";
    }
}

答案 1 :(得分:0)

&#13;
&#13;
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));
&#13;
&#13;
&#13;

使用这种函数,您可以在给定日期之前的任何N天获取Date对象数组