1

How to add a day (or 2 days) to date 31.07.2012 and return result in format dd.MM.yyyy (same format as input date)?

0

5 Answers 5

3

The best way would be to use the javascript date object. The date object in javascirpt is initialized as mm/dd/yyyy or as Date(year,month-1, date). That is,

dateString = "31.07.2012"
dateSplit = dateString.split('.') 
date = new Date(dateSplit[2], dateSplit[1]-1, dateSplit[0])
date.setDate(date.getDate()+2)
newDateString = ((date.getDate() > 10) ? date.getDate() : ("0" + date.getDate())) + "." + ((date.getMonth()+1 > 10) ? date.getMonth()+1 : ("0" + (date.getMonth()+1))) + "." + (date.getFullYear())

month-1 is used in Date(year,month-1, date) because months start with 0

The result will be

"02.08.2012"
Sign up to request clarification or add additional context in comments.

3 Comments

The date object in javascirpt is initialized as mm/dd/yyyy, no, it isn't. Only one string format is specified in ES5 and that isn't it. Otherwise, it's implementation dependent.
@RobG try date = new Date("07/31/2012"). It will create a date object as "Tue Jul 31 2012 14:26:59 GMT+0530 (India Standard Time)". I didnt say that it is the only way to initialize a date object.
—parsing of strings other than the format specified in ES5 is implementation dependent. Further, the ES5 format isn't supported by all browsers in use, therefore is should not be relied upon. The format month/day/year is peculiar to a very small proportion of the world's population and is not supported by any official standard.
2
    var numDaysToAdd = 2;
    var inputDateString = "31.07.2012";
    var resultDate = stringToDate(inputDateString);
    resultDate.setDate( resultDate.getDate()+numDaysToAdd );
    var result = dateToString( resultDate );


    alert(result);

    function stringToDate( aString )
    {
        var dateArray = aString.split(".");
        return new Date(dateArray[2],dateArray[1]-1,dateArray[0]);
    }

    function dateToString( aDate )
    {
        var date = aDate.getDate();
        date = (date > 9) ? date : "0"+date.toString();

        var month = aDate.getMonth()+1;
        month = (month > 9) ? month : "0"+month.toString();

        var year = aDate.getFullYear();


        return (date+"."+month+"."+year);
    }

2 Comments

Also you can add these functions to Date.prototype. It would be more object oriented
oops, indeed. I hope it is not a big deal to switch the parameters :). Just fixed.
2
/**
 * Format date (2012.08.31)
 */
Date.prototype.format = function() {
   var yyyy = this.getFullYear().toString();
   var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
   var dd  = this.getDate().toString();
   return yyyy + '.' + (mm[1]?mm:"0"+mm[0]) + '.' + (dd[1]?dd:"0"+dd[0]); // padding
}

/**
 * Increase current time
 */
Date.prototype.increase_days = function(days) {
    this.setTime(this.getTime() + (days * (1000 * 60 * 60 * 24)));
    return this;
}

//usage:
var date = new Date();
date.increase_days(2);
console.log(date.format());

Comments

1

assuming inputDateString format is dd.mm.yyyy

function addDaysToDate (inputDateString ,noOfDays ){ 
    var myDate=dateString.split(".");
    var newDate=myDate[1]+"/"+myDate[0]+"/"+myDate[2];
    var dateInMilliSec  = new Date(newDate).getTime();
    var addDaysToTime = new Date(dateInMilliSec + (86400000 * noOfDays));
    var dd = addDaysToTime.getDate();
    var MM = addDaysToTime.getMonth()+1;
    var yyyy = addDaysToTime.getFullYear();
    return dd+"."+MM+"."+yyyy;
};

Comments

0

This will do it for you

var d = "31.07.2012";
d = d.split(".");
date = new Date(d[2],d[1]-1,d[0]);
date.setDate(date.getDate() + 2);
document.body.innerHTML += (date.getDate() + "." + date.getMonth() + "." + (date.getFullYear()));

1 Comment

You forgot to subtract one from the month number.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.