JavaScript 如何以 dd-mm-yy 格式获取明天的日期

IT技术 javascript
2021-03-04 13:53:40

我正在尝试让 JavaScript 以格式 (dd-mm-yyyy) 显示明天的日期

我有这个脚本,它以格式 (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)

但是我如何让它以相同的格式显示明天的日期,即 26/2/2012

我试过这个:

var day = currentDate.getDate() + 1

但是,我可以保持+1并超过 31 天,显然一个月内不会超过 32 天

已经搜索了几个小时,但似乎没有答案或解决方案?

6个回答

这应该修复它对你来说真的很好。

如果您一次传递 Date 构造函数,它将完成其余的工作。

24 小时 60 分 60 秒 1000 毫秒

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>")

要记住的一件事是,此方法将准确返回现在 24 小时后的日期,这在夏令时前后可能不准确。

菲尔的回答工作的任何时候:

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

我编辑帖子的原因是我自己创建了一个错误,该错误在 DST 期间使用我的旧方法曝光。

new Date().getTime() 可以简化为 Date.now()
2021-04-17 13:53:40
@ConorB, .getMonth() 一月返回 0,二月返回 1 ...... 十二月返回 11。添加 1 将其从数组索引变为人类可读的日期。
2021-04-26 13:53:40
他们都是正确的,但我认为 IE8 没有 Date.now()。
2021-05-07 13:53:40
谢谢,有点短 var currentDate = new Date(+new Date() + 86400000);
2021-05-10 13:53:40
请注意,使用此策略时,您可能会遇到有关 DST 的问题,这会导致一年中的某一天有 23 小时,而另一天有 25 小时。下面 Phil 的回答避免了这个问题。
2021-05-11 13:53:40

JavaScriptDate类会为您处理这个问题

var d = new Date("2012-02-29")
console.log(d)
// Wed Feb 29 2012 11:00:00 GMT+1100 (EST)

d.setDate(d.getDate() + 1)
console.log(d)
// Thu Mar 01 2012 11:00:00 GMT+1100 (EST)

console.log(d.getDate())
// 1
哦,是的,你说得对。我忘了二月只有 28 天 :-)
2021-04-24 13:53:40
@Timo 很确定我的例子正好说明了这一点
2021-05-02 13:53:40
@nunoarruda 我回答中的日期字符串纯粹是为了说明目的。这个答案的关键是您可以使用setDategetDate添加天数。我建议你阅读你的问题的答案
2021-05-02 13:53:40
今天这对我来说失败了,因为 new Date('2016-10-31') 返回'Sun Oct 30 2016 23:00:00 GMT-0100 (AZOT)'。我在亚速尔群岛,时区从 AZOST 更改为 AZOT
2021-05-08 13:53:40
如果今天是一个月的最后一天,比如 31 号,这仍然有效吗?如果你加+1,你会得到第32名吗?
2021-05-10 13:53:40

我会使用 DateJS 库。它可以做到这一点。

http://www.datejs.com/

执行以下操作:

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

Date.today() - 今天午夜给你。

Date.parse('明天').toString('dd-MM-yyyy');
2021-04-22 13:53:40
我更喜欢 Phil 的回答......我对所有日期都使用 DateJS - 但似乎可以单独使用 JS 来完成!
2021-05-08 13:53:40

方法Date.prototype.setDate()甚至接受标准范围之外的参数并相应地更改日期。

function getTomorrow() {
    const tomorrow = new Date();
    tomorrow.setDate(tomorrow.getDate() + 1); // even 32 is acceptable
    return `${tomorrow.getFullYear()}/${tomorrow.getMonth() + 1}/${tomorrow.getDate()}`;
}

下面结合了 Roderick 和 Phil 的答案以及两个额外的条件,这些条件说明了个位数的月/天。

我使用过的许多 API 对此都很挑剔,并且要求日期具有八位数字(例如“02022017”),而不是日期类在某些情况下会提供给您的 6 或 7 位数字。

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;
}