【问题标题】:Adding days to Date in javascript / typescript gives completely wrong date在 javascript / typescript 中添加日期到日期会给出完全错误的日期
【发布时间】:2016-08-02 10:38:22
【问题描述】:

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

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

【问题讨论】:

  • JS 日期问题数不胜数。你确定没有人回答这个问题吗?
  • @evolutionxbox 好吧,我复制并粘贴了其中一个问题的答案。但仍然得到一个在 10% 的时间内有效的方法......

标签: javascript date datetime time typescript


【解决方案1】:

你的类型有问题。如果days 是 14,那么它将正确生成 8 月 16 日。但是,如果 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;
  }

【讨论】:

  • Typescript 返回有关“天数”的错误:“数字”类型的参数不可分配给“字符串”类型的参数。
猜你喜欢
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
相关资源
最近更新 更多