【问题标题】:JavaScript, get date of the next day [duplicate]JavaScript,获取第二天的日期[重复]
【发布时间】:2014-05-29 15:45:14
【问题描述】:

我有以下脚本,它会在第二天返回:

function today(i)
    {
        var today = new Date();
        var dd = today.getDate()+1;
        var mm = today.getMonth()+1;
        var yyyy = today.getFullYear();

        today = dd+'/'+mm+'/'+yyyy;

        return today;   
    }

通过使用这个:

today.getDate()+1;

我正在获取本月的第二天(例如今天将获取 16)。

我的问题是这可能在本月的最后一天,因此最终返回 32/4/2014

有没有办法保证第二天的正确日期?

【问题讨论】:

  • new Date(1000*60*60*24 + +new Date())这样的班轮有什么错误吗?
  • @KrIsHnA 可爱的单线。没有错误!我将它用作new Date(86400000 + +new Date()),以节省处理器的乘法成本。 @ToWhomItMayConcern 这里前缀的加号 +new Date() 是一元运算符(尝试将操作数转换为数字,如果还没有的话),以防万一:)

标签: javascript date


【解决方案1】:

你可以使用:

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

例如,由于 4 月有 30 天,下面的代码将输出 5 月 1 日:

var day = new Date('Apr 30, 2000');
console.log(day); // Apr 30 2000

var nextDay = new Date(day);
nextDay.setDate(day.getDate() + 1);
console.log(nextDay); // May 01 2000    

fiddle

【讨论】:

  • 不知道对性能有没有帮助,不过可以用tomorrow.setDate(tomorrow.getDate() + 1);简化一下
  • 这种方法不会更新月份。因此,如果您要求月份,它仍然会返回 April,在示例中
  • @marimaf - 这种方法确实会更新月份。他的例子有点不靠谱,因为它取决于他做出这个答案的同一个月(我刚刚更新以解决这个问题),但这种方法有效。
  • 谢谢..帮了我很多
  • 这是一个更适合我的需求的 oneliner:var tomorrow = new Date(new Date().setDate(new Date().getDate() + 1));
【解决方案2】:

使用 Date 对象可以保证这一点。例如,如果您尝试创建 April 31st

new Date(2014,3,31)        // Thu May 01 2014 00:00:00

请注意它是零索引的,所以一月是 0,二月是 1 等等。

【讨论】:

  • 请注意,以“0”开头的数字文字是八进制并且已被弃用。所以这段代码在严格模式下可能会导致错误。而且,你写的是 03 而不是 04 ...
  • @tsh - 它的索引为零。所以 3 对于四月是正确的。
【解决方案3】:

从这里复制粘贴: Incrementing a date in JavaScript

三种选择:

仅使用 JavaScript 的 Date 对象(无库):

var today = new Date();
var tomorrow = new Date(today.getTime() + (24 * 60 * 60 * 1000));

或者,如果您不介意更改日期(而不是创建 新日期):

var dt = new Date();
dt.setTime(dt.getTime() + (24 * 60 * 60 * 1000));

编辑:另见 Jigar 的回答和 David 在下面的评论:var tomorrow = 新日期();明天.setDate(tomorrow.getDate() + 1);

使用 MomentJS:

var today = moment();
var tomorrow = moment(today).add(1, 'days');

(请注意 add 会修改您调用它的实例,而不是 返回一个新实例,因此 today.add(1, 'days') 将在今天进行修改。 这就是为什么我们从 var明天开始克隆操作 = ....)

使用DateJS,但是很久没更新了:

var today = new Date(); // Or Date.today()
var tomorrow = today.add(1).day();

【讨论】:

  • 请注明引用!
  • 将问题作为重复项关闭比 c&p 答案更容易也更好。
  • @Bergi 特别是因为答案在被复制后发生了变化......
  • 这不适用于夏令时!试试这个new Date(2016, 10, 6)
  • 原答案已更新,如果可以的话,我会投票关闭这个答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 2020-10-03
相关资源
最近更新 更多