javascript - 在 javascript/typescript 中向 Date 添加天数会给出完全错误的日期

标签 javascript date datetime time typescript

我有这个非常简单的代码,有时它可以工作,但有时它会给出完全错误的日期:

  addDays(date: Date, days: number): Date {
    console.log('adding ' + days + ' days');
    console.log(date);
    date.setDate(date.getDate() + days);
    console.log(date);
    return date;
  }

这是一个输出示例:

有效!

adding 7 days
error-chart.component.ts:118 Tue Aug 02 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid))
error-chart.component.ts:120 Tue Aug 09 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid))

停止工作:

adding 14 days
error-chart.component.ts:118 Tue Aug 02 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid))
error-chart.component.ts:120 Thu Mar 02 2017 00:00:00 GMT+0100 (Vest-Europa (normaltid))

以某种方式跳跃 2 年

adding 14 days
error-chart.component.ts:118 Thu Jul 07 2016 00:00:00 GMT+0200 (Vest-Europa (sommertid))
error-chart.component.ts:120 Thu Jun 14 2018 00:00:00 GMT+0200 (Vest-Europa (sommertid))

现在 4 年了!

adding 14 days
error-chart.component.ts:118 Thu Jun 14 2018 00:00:00 GMT+0200 (Vest-Europa (sommertid))
error-chart.component.ts:120 Thu Apr 14 2022 00:00:00 GMT+0200 (Vest-Europa (sommertid))

最佳答案

你的类型有问题。如果 days 是 14,那么它将正确产生 16th August。但是,如果 days 是“14”,那么它将生成 3 月 2 日。

解决方法:

  addDays(date: Date, days: number): Date {
    console.log('adding ' + days + ' days');
    console.log(date);
    date.setDate(date.getDate() + parseInt(days));
    console.log(date);
    return date;
  }

关于javascript - 在 javascript/typescript 中向 Date 添加天数会给出完全错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38718160/

相关文章:

c++ - 没有外部库的C++ Int到任何日期

java - 将字符串解析为不带语言环境的日期

javascript - 如何在 Javascript 中将(年、月、日)转换为扩展年份日期格式并处理 0 到 99 年

javascript - 创建一个 jQuery 插件,使单个元素在调整窗口大小时使用react。我如何处理听众?

javascript - jQuery 背景变化闪烁

javascript - Angular.injector(..).invoke 在控制台中不返回单例

javascript - 调试 Protractor

php - 如何使用 date() 在 php 中将时间戳转换为日期而不扭曲数据?

MySQL - DATETIME 字段的约束未返回预期结果

database - Go 语言中带时区的时间戳