Incrementing a date in JavaScript

后端 未结 17 2480
余生分开走
余生分开走 2020-11-22 05:15

I need to increment a date value by one day in JavaScript.

For example, I have a date value 2010-09-11 and I need to store the date of the next day in a JavaScript v

17条回答
  •  面向向阳花
    2020-11-22 05:58

    None of the examples in this answer seem to work with Daylight Saving Time adjustment days. On those days, the number of hours in a day are not 24 (they are 23 or 25, depending on if you are "springing forward" or "falling back".)

    The below AddDays javascript function accounts for daylight saving time:

    function addDays(date, amount) {
      var tzOff = date.getTimezoneOffset() * 60 * 1000,
          t = date.getTime(),
          d = new Date(),
          tzOff2;
    
      t += (1000 * 60 * 60 * 24) * amount;
      d.setTime(t);
    
      tzOff2 = d.getTimezoneOffset() * 60 * 1000;
      if (tzOff != tzOff2) {
        var diff = tzOff2 - tzOff;
        t += diff;
        d.setTime(t);
      }
    
      return d;
    }
    

    Here are the tests I used to test the function:

        var d = new Date(2010,10,7);
        var d2 = AddDays(d, 1);
        document.write(d.toString() + "
    " + d2.toString()); d = new Date(2010,10,8); d2 = AddDays(d, -1) document.write("

    " + d.toString() + "
    " + d2.toString()); d = new Date('Sun Mar 27 2011 01:59:00 GMT+0100 (CET)'); d2 = AddDays(d, 1) document.write("

    " + d.toString() + "
    " + d2.toString()); d = new Date('Sun Mar 28 2011 01:59:00 GMT+0100 (CET)'); d2 = AddDays(d, -1) document.write("

    " + d.toString() + "
    " + d2.toString());

提交回复
热议问题