如何在当前日期添加1天?

fra*_*tic 61 javascript

我有使用JavaScript Date对象需要增加一天的当前日期对象.

var ds = stringFormat("{day} {date} {month} {year}", { 
                day: companyname.i18n.translate("day", language)[date.getUTCDay()], 
                date: date.getUTCDate(), 
                month: companyname.i18n.translate("month", language)[date.getUTCMonth()], 
                year: date.getUTCFullYear() 
});
Run Code Online (Sandbox Code Playgroud)

我怎么能加入一天呢?

我已经为getUTCDay()和getUTCDate()添加了+1,但是'Sunday'没有显示它.

Rob*_*obG 171

要将一天添加到日期对象:

var date = new Date();

// add a day
date.setDate(date.getDate() + 1);
Run Code Online (Sandbox Code Playgroud)

  • 啊哈.我没有意识到**[getDate](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate)**正在从UTC转换为当地时间.`a.setUTCDate(a.getUTCDate()+ 1);`< - 适用于Zulu日期. (7认同)
  • 如果31+1会发生什么? (7认同)
  • 请参阅重复的问题:http://stackoverflow.com/questions/3674539/javascript-date-increment-question。这个答案很好,但没有考虑 DST。一年中有 2 天不是 24 小时。 (3认同)
  • @Jess-它取决于你想要如何代表DST的变化.问题是如何在日期中添加一个,这正是上面的答案所做的.添加24小时不一定会增加该日期,使用[*setDate*](http://ecma-international.org/ecma-262/5.1/#sec-15.9.5.36)在本地日期添加一个. (2认同)

Pet*_*ian 27

在我看来,最好的方法是在毫秒内添加一整天,具体取决于你如何考虑你的代码,如果你在这个月的最后一天它可能会搞乱.

例如2月28日或3月31日.

这是我如何做的一个例子:

var current = new Date(); //'Mar 11 2015' current.getTime() = 1426060964567
var followingDay = new Date(current.getTime() + 86400000); // + 1 day in ms
followingDay.toLocaleDateString();
Run Code Online (Sandbox Code Playgroud)

这样可以保证准确性

这是另一个例子我不喜欢它可以为你工作,但不是那么干净,以上

var today = new Date('12/31/2015');
var tomorrow = new Date(today);
tomorrow.setDate(today.getDate()+1);
tomorrow.toLocaleDateString();
Run Code Online (Sandbox Code Playgroud)

imho这个==='POOP'

因此,有些人因为白天节省时间而对我的毫秒方法感到抱怨.所以我要打破这个.首先,一些国家和州没有日光节约时间.第二次添加正好24小时是一整天.如果日期数量不是每年更换一次,但在6个月后得到修复,那么我没有看到问题.但为了明确和不得不处理分配邪恶的日期()我已经想到这一点,现在彻底讨厌日期.所以这是我的新方法

var dd = new Date(); // or any date and time you care about 
var dateArray =  dd.toISOString().split('T')[0].split('-').concat( dd.toISOString().split('T')[1].split(':') );
// ["2016", "07", "04", "00", "17", "58.849Z"] at Z 
Run Code Online (Sandbox Code Playgroud)

现在是有趣的部分!

var date = { 
    day: dateArray[2],
    month: dateArray[1],
    year: dateArray[0],
    hour: dateArray[3],
    minutes: dateArray[4],
    seconds:dateArray[5].split('.')[0],
    milliseconds: dateArray[5].split('.')[1].replace('Z','')
}
Run Code Online (Sandbox Code Playgroud)

现在我们在祖鲁子午线上清楚地写出了我们的官方有效国际日期对象.现在改变日期

  dd.setDate(dd.getDate()+1); // this gives you one full calendar date forward
  tomorrow.setDate(dd.getTime() + 86400000);// this gives your 24 hours into the future. do what you want with it.
Run Code Online (Sandbox Code Playgroud)

  • 你可以看到这样的效果:`var dte = Date.parse('2015-11-01'); 的console.log(DTE); dte.setTime(dte.getTime()+ 86400000); 的console.log(DTE);` (3认同)
  • 它将是 UTC 时间的第二天,是的,但不一定是当地时间。在美国的 Spring Forward 日,一天有 25 个小时。因此,如果您在 00:00 时有例如 3/31/15,并添加 86400000 毫秒,则在 Sprint Forward 日,本地时间将是 3/31/15 在 23:00 时,因为当天有 25 小时。 (2认同)
  • 这是过度设计的。如果您遇到这样的问题,请使用像 moment 这样的库或其他东西来帮助使事情变得更容易。 (2认同)

小智 23

如果您想在当前日期时间中添加一天(24 小时),您可以像这样添加毫秒:

new Date(Date.now() + ( 3600 * 1000 * 24))
Run Code Online (Sandbox Code Playgroud)


小智 15

你可以这样做

var date = new Date();
date.setDate(date.getDate() + 1);
console.log(date);
Run Code Online (Sandbox Code Playgroud)

现在date将是明天的日期。您可以在此处根据需要添加或减少天数。


Ser*_*rge 9

int days = 1;
var newDate = new Date(Date.now() + days*24*60*60*1000);
Run Code Online (Sandbox Code Playgroud)

CodePen

var days = 2;
var newDate = new Date(Date.now()+days*24*60*60*1000);

document.write('Today: <em>');
document.write(new Date());
document.write('</em><br/> New: <strong>');
document.write(newDate);
Run Code Online (Sandbox Code Playgroud)

  • 添加一天的毫秒数会失败,因为在实行夏令时的地方,并非所有日子都是 24 小时。例如,智利于 2017 年 5 月 14 日开始于午夜结束夏令时。时钟将从午夜回拨至 23:00。因此,将 24 小时添加到 2017-05-13 00:00:00 将产生 2017-05-13 23:00:00,并且日期不会改变(有些浏览器会在午夜执行此操作,其他浏览器会在午夜后执行此操作一毫秒) 。:-( (2认同)

Jee*_*Mok 6

jpmottin这个问题中的启发,是一行代码:

var dateStr = '2019-01-01';
var days = 1;

var result = new Date(new Date(dateStr).setDate(new Date(dateStr).getDate() + days));

document.write('Date: ', result); // Wed Jan 02 2019 09:00:00 GMT+0900 (Japan Standard Time)
document.write('<br />');
document.write('Trimmed Date: ', result.toISOString().substr(0, 10)); // 2019-01-02
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助