【问题标题】:Adding days to getDate function in JavaScript在 JavaScript 中为 getDate 函数添加天数
【发布时间】:2022-02-10 05:52:00
【问题描述】:

我有这个功能来选择可以正常工作的日期

formatDateField(event: Date, formControl: string) {
    this.form
      .get(formControl)
      .patchValue(
        this.datePipe.transform(event.getTime(), "yyyy-MM-dd'T'HH:mm:ss")
      );
  }

我使用下面的代码添加了一个按钮来添加日期,但在开发人员工具>控制台中显示未定义:

  addDaysToDateForm(formName: string, days: number) {
    let formDate: Date = this.form.get(formName).value || new Date();
    formDate.setDate(formDate.getDate() + days);
    this.form.get(formName).setValue(formDate);
  }
  setTodayForm(formName: string) {
    this.form.get(formName).setValue(new Date());
  }

知道有什么问题吗?

【问题讨论】:

  • 我建议使用像 luxon 这样的库。
  • this.form.get(formName).value 返回什么?它真的返回 Date 对象吗?您的代码似乎假设它确实如此,但与 DOM 表单相关的 value 是一个字符串。当然,这可能是一些库,但是...
  • 从根本上说,如果formDate 真的是一个Date 对象并且days 真的是一个数字,那么formDate.setDate(formDate.getDate() + days) days 天添加到日期.因此,如果您没有看到这一点,那么这两件事之一是不正确的(formDate 不是 Date,或 days 不是数字)。
  • 我认为this.form.get(formName).value 返回一个string 而不是Date 对象,所以@T.J.Crowder 说的是真的。
  • 谢谢@T.J.Crowder formDate 是一个 Date 对象。 formName 是一个字符串。如何在这段代码中使用 this.form.get(formName).value ... 将字符串转换为日期?

标签: javascript angular typescript date datepicker


【解决方案1】:

我们没有Typed Forms (just yet),因此不会键入从表单值返回的值(正如@T.J.Crowder 在 cmets 中所说)。您可以通过调用new Date()this.form.get(formName).value 返回的值转换为日期。即new Date(this.form.get(formName).value)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 2020-04-04
  • 2014-04-27
  • 2015-10-13
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多