Search code examples
javascriptbootstrap-datetimepickerdaysdate-difference

get last 7 days when user picks up a date


I have a datetimepicker where the user picks up a date, and my requirement is I need 7 days difference between his selected date.

For eg,

if user has selected 2017-03-01 so i need last 7 days from 2017-03-01 and NOT the current date

All answers i checked here were based on days difference from today.

Can anyone help me out here ?

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

this was on one of the answers but didn't work.

How can I achieve this ?


Solution

  • Try This
    SelectDateTime will give you selected date
    604800000 is 7 days in miliseconds
    prevDate will give you last 7 days Date

    $("#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 is a function which converts milliseconds to 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 " ";
        }
    }