【问题标题】:get last 7 days when user picks up a date获取用户选择日期的最后 7 天
【发布时间】:2017-06-27 11:56:16
【问题描述】:

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

例如,

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

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

谁能帮帮我?

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

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

我怎样才能做到这一点?

【问题讨论】:

    标签: javascript bootstrap-datetimepicker days date-difference


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      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 对象数组获取

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-07
        • 2012-10-17
        • 2019-02-13
        • 2019-11-26
        • 2018-12-17
        • 1970-01-01
        • 2016-12-23
        • 1970-01-01
        相关资源
        最近更新 更多