108

I am trying to get JavaScript to display tomorrows date in format (dd-mm-yyyy)

I have got this script which displays todays date in format (dd-mm-yyyy)

var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")

Displays: 25/2/2012 (todays date of this post)

But how do I get it to display tomorrows date in the same format i.e. 26/2/2012

I tried this:

var day = currentDate.getDate() + 1

However I could keep +1 and go over 31 obviously there are not >32 days in a month

Been searching for hours but seems to be no answer or solution around this?

daza166
  • 3,543
  • 10
  • 35
  • 41

16 Answers16

200

This should fix it up real nice for you.

If you pass the Date constructor a time it will do the rest of the work.

24 hours 60 minutes 60 seconds 1000 milliseconds

var currentDate = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")

One thing to keep in mind is that this method will return the date exactly 24 hours from now, which can be inaccurate around daylight savings time.

Phil's answer work's anytime:

var currentDate = new Date();
currentDate.setDate(currentDate.getDate() + 1);

The reason I edited my post is because I myself created a bug which came to light during DST using my old method.

Roderick Obrist
  • 3,688
  • 1
  • 16
  • 17
157

The JavaScript Date class handles this for you

var d = new Date(2012, 1, 29) // month is 0-based in the Date constructor
console.log(d.toLocaleDateString())
// Wed Feb 29 2012

d.setDate(d.getDate() + 1)
console.log(d.toLocaleDateString())
// Thu Mar 01 2012

console.log(d.getDate())
// 1
Phil
  • 157,677
  • 23
  • 242
  • 245
  • 1
    Will this still work if today was last day of a month, like 31st? If you add +1 wouldn't you end up with 32nd? – Timo Ernst Apr 24 '15 at 12:33
  • 25
    @Timo pretty sure my example demonstrates exactly that – Phil Apr 24 '15 at 12:36
  • 1
    Oh, yeah you're right. I forgot that February only has 28 days :-) – Timo Ernst Apr 24 '15 at 13:06
  • This failed for me today because new Date('2016-10-31') returns 'Sun Oct 30 2016 23:00:00 GMT-0100 (AZOT)'. I'm in the Azores islands and the timezone was changed from AZOST to AZOT – nunoarruda Oct 31 '16 at 12:12
  • @nunoarruda sorry, not really sure what you're saying there or what it has to do with this answer – Phil Oct 31 '16 at 12:50
  • @Phil http://stackoverflow.com/questions/40342395/new-date2016-10-31-returning-sun-oct-30-2016 – nunoarruda Oct 31 '16 at 12:51
  • @nunoarruda yes, that is a link to this question. I still don't know what your comment has to do with this answer. In fact, I don't know what you're trying to say at all – Phil Oct 31 '16 at 12:52
  • @Phil sorry, wrong link, already fixed. I've used your code to get the tomorrow date but it failed today due to timezone changes. – nunoarruda Oct 31 '16 at 12:55
  • 1
    @nunoarruda the date strings in my answer are purely for illustration purposes. The crux of this answer is that you can use `setDate` and `getDate` to add days. I suggest you read the answer given to your question – Phil Oct 31 '16 at 13:00
  • @Phil—yes, but creating a Date by parsing a string is a bad idea. For anyone west of Greenwich, `new Date("2012-02-29")` creates a local date for 28 February so adding 1 day just gets 29 February. Far better to use `new Date(2012, 1, 29)`. – RobG Feb 26 '22 at 07:39
  • @RobG correct as always. I've updated this, thanks – Phil Mar 02 '22 at 07:32
7

Method Date.prototype.setDate() accepts even arguments outside the standard range and changes the date accordingly.

function getTomorrow() {
    const tomorrow = new Date();
    tomorrow.setDate(tomorrow.getDate() + 1); // even 32 is acceptable
    return `${tomorrow.getFullYear()}/${tomorrow.getMonth() + 1}/${tomorrow.getDate()}`;
}
czerny
  • 15,090
  • 14
  • 68
  • 96
6

Using JS only(Pure js)

Today

new Date()
//Tue Oct 06 2020 12:34:29 GMT+0530 (India Standard Time)
new Date(new Date().setHours(0, 0, 0, 0))
//Tue Oct 06 2020 00:00:00 GMT+0530 (India Standard Time)
new Date(new Date().setHours(0, 0, 0,0)).toLocaleDateString('fr-CA')
//"2020-10-06"

Tomorrow

new Date(+new Date() + 86400000);
//Wed Oct 07 2020 12:44:02 GMT+0530 (India Standard Time)
new Date(+new Date().setHours(0, 0, 0, 0) + 86400000);
//Wed Oct 07 2020 00:00:00 GMT+0530 (India Standard Time)
new Date(+new Date().setHours(0, 0, 0,0)+ 86400000).toLocaleDateString('fr-CA')
//"2020-10-07"
//don't forget the '+' before new Date()

Day after tomorrow

Just multiply by two ex:- 2*86400000

You can find all the locale shortcodes from https://stackoverflow.com/a/3191729/7877099

Isuru Dilshan
  • 719
  • 9
  • 18
4

Method 1: If you don't have problem in using other library, then this could work for you using moment.js

moment().add('days', 1).format('L');

Method 2: Using Date.js,

<script type="text/javascript" src="date.js"></script>    
var tomorrow = new Date.today().addDays(1).toString("dd-mm-yyyy"); 

This method uses external library and not the native Date library. As my bootstrap-datetimepicker was using moment.js and native date library, I preferred method 1. This question mentions these and some other methods.

Community
  • 1
  • 1
Shiwangi
  • 193
  • 1
  • 7
4

The below uses a combination of Roderick and Phil's answers with two extra conditionals that account for single digit months/days.

Many APIs I've worked with are picky about this, and require dates to have eight digits (eg '02022017'), instead of the 6 or 7 digits the date class is going to give you in some situations.

function nextDayDate() {
      // get today's date then add one
      var nextDay = new Date();
      nextDay.setDate(nextDay.getDate() + 1);

      var month = nextDay.getMonth() + 1;
      var day = nextDay.getDate();
      var year = nextDay.getFullYear();

      if (month < 10) { month = "0" + month } 
      if (day < 10) { day = "0" + day }

      return month + day + year;
}
Tunaki
  • 132,869
  • 46
  • 340
  • 423
DNestoff
  • 124
  • 5
4

I would use the DateJS library. It can do exactly that.

http://www.datejs.com/

The do the following:

var d = new Date.today().addDays(1).toString("dd-mm-yyyy");

Date.today() - gives you today at midnight.

MattW
  • 12,902
  • 5
  • 38
  • 65
3

Use cases :

Date.tomorrow() // 1 day next 
Date.daysNext(1) // alternative Date.tomorrow()
Date.daysNext(2) // 2 days next. 

IF "tomorrow " is not depend of today but of another Date different of Date.now(), Don't use static methods but rather you must use non-static :

i.e: Fri Dec 05 2008

 var dec5_2008=new Date(Date.parse('2008/12/05'));
 dec5_2008.tomorrow(); // 2008/12/06
    dec5_2008.tomorrow().day // 6
    dec5_2008.tomorrow().month // 12
    dec5_2008.tomorrow().year //2008
 dec5_2008.daysNext(1); // the same as previous
 dec5_2008.daysNext(7) // next week :)

API :

Dateold=Date;function Date(e){var t=null;if(e){t=new Dateold(e)}else{t=new Dateold}t.day=t.getDate();t.month=t.getMonth()+1;t.year=t.getFullYear();return t}Date.prototype.daysNext=function(e){if(!e){e=0}return new Date(this.getTime()+24*60*60*1e3*e)};Date.prototype.daysAgo=function(e){if(!e){e=0}return Date.daysNext(-1*e)};Date.prototype.tomorrow=function(){return this.daysNext(1)};Date.prototype.yesterday=function(){return this.daysAgo(1)};Date.tomorrow=function(){return Date.daysNext(1)};Date.yesterday=function(){return Date.daysAgo(1)};Date.daysNext=function(e){if(!e){e=0}return new Date((new Date).getTime()+24*60*60*1e3*e)};Date.daysAgo=function(e){if(!e){e=0}return Date.daysNext(-1*e)}
Abdennour TOUMI
  • 87,526
  • 38
  • 249
  • 254
1

Its really simple:

1: Create date object with today' date and time. 2: Use date object methods to retrieve day, month and full year and concatenate them using the + operator.

Sample Code:

var my_date = new Date();
var tomorrow_date = (my_date.getDate() + 1) + "-" + (my_date.getMonth() + 1) + "-" + my_date.getFullYear();
document.write(tomorrow_date);
VLAZ
  • 26,331
  • 9
  • 49
  • 67
Sohail Arif
  • 279
  • 2
  • 9
0
function getMonday(d)
{
   // var day = d.getDay();
   var day = @Config.WeekStartOn
   diff = d.getDate() - day + (day == 0 ? -6 : 0);
   return new Date(d.setDate(diff));
}
decPL
  • 5,384
  • 1
  • 26
  • 36
0

The same as the original answer, but in one line:

var tomorrow = new Date(Date.now() + 24 * 60 * 60 * 1000)

The numbers stand for 24 hours 60 minutes 60 seconds 1000 milliseconds.

Velter
  • 2,080
  • 1
  • 16
  • 19
0

you can try this:

function Tomorrow(date=false) {
    var givendate = (date!=false) ? new Date(date) : new Date();
    givendate.setDate(givendate.getDate() + 1);
    var day = givendate.getUTCDate()
    var month = givendate.getUTCMonth()+1
    var year = givendate.getUTCFullYear()
    result ="<b>" + day + "/" + month + "/" + year + "</b>";
    return result;
} 
var day = Tomorrow('2020-06-30');
console.log('tomorrows1: '+Tomorrow('2020-06-30'));
console.log('tomorrows2: '+Tomorrow());
0

//to get date of tomorrow
let tomorrow=new Date(`${(new Date()).getFullYear()}-${(new Date()).getMonth()+1}-${(new Date()).getDate()+1}`);

//for dd-mm-yy format
tomorrow=`${tomorrow.getDate()}-${tomorrow.getMonth()+1}-${((tomorrow.getFullYear()).toString()).slice(-2)}`;

document.write(tomorrow)
-1
        //-----------Date Configuration march 18,2014----------------------

        //alert(DateFilter);

        var date = new Date();
        y = date.getFullYear(), m = date.getMonth();
        var EndDate = new Date();



        switch (DateFilter) {
            case 'today': var StartDate = EndDate;   //todays date                 
                break;
            case 'yesterday':
                var d = new Date();
                var previousDate = new Date(d.getTime() - 1000 * 60 * 60 * 24);
                var StartDate = new Date(previousDate.yyyymmdd()); //yesterday Date
                break;
            case 'tomorrow':
                var d = new Date();
                var NextDate = new Date(d.getTime() + 1000 * 60 * 60 * 24);
                var StartDate = new Date(NextDate.yyyymmdd()); //tomorrow Date
                break;
            case 'thisweek': var StartDate = getMonday(new Date()); //1st date of this week
                break;
            case 'thismonth': var StartDate = new Date(y, m, 1);  //1st date of this month
                break;
            case 'thisyear': var StartDate = new Date("01/01/" + date.getFullYear());  //1st date of this year
                break;
            case 'custom': //var StartDate = $("#txtFromDate").val();                   
                break;
            default:
                var d = new Date();
                var StartDate = new Date(d.getTime() - 30 * 24 * 60 * 60 * 1000); //one month ago date from now.
        }


        if (DateFilter != "custom") {
            var SDate = $.datepicker.formatDate('@Config.DateFormat', StartDate); $("#txtFromDate").val(SDate);
            var EDate = $.datepicker.formatDate('@Config.DateFormat', EndDate); $("#txtToDate").val(EDate);
        }
        //-----------Date Configuration march 18,2014----------------------
-1
var curDate = new Date().toLocaleString().split(',')[0];

Simply! in dd.mm.yyyy format.

Idan
  • 3,604
  • 1
  • 28
  • 33
-1
        Date.prototype.NextDay = function (e) {
        return new Date(this.getFullYear(), this.getMonth(), this.getDate() + ("string" == typeof e ? parseInt(e, 10) : e));
    }

    // tomorrow
    console.log(new Date().NextDay(1))

    // day after tomorrow
    console.log(new Date().NextDay(2))