【问题标题】:how to set end date when select the start date?选择开始日期时如何设置结束日期?
【发布时间】:2021-09-02 10:26:11
【问题描述】:

我想设置结束日期取决于用户选择开始日期时的余额和开始日期,

例如,如果开始日期为2021-09-01,余额为11,则直接结束日期为2021-09-12

我正在使用来自 ant Design 的 DatePicer,

这是我的代码

useEffect(() => {
    if (
      (selectedLeaveId && selectedLeaveId === LeavesId.annualLeaveId)
    ) {
      const start = startDate;
// this will change the start date too , i dont want that 
      const directEndDate = start?.add(remainingBalance, 'days');
      setEndDate(directEndDate);
    }
  }, [selectedLeaveId, startDate, remainingBalance]);```

【问题讨论】:

    标签: javascript reactjs typescript antd


    【解决方案1】:

    强烈推荐使用 moment.js https://momentjscom.readthedocs.io/en/latest/moment/03-manipulating/01-add/

    您可以按如下方式传递日期

    let start = moment(startDate)
    let end = start.add(DIFFERENCE, 'days');
    

    【讨论】:

    • startDate 和 endDate 是时刻类型,所以如果我这样做,它也会改变 startDate
    【解决方案2】:

    您遇到的问题是因为您正在修改 start 日期对象并将其分配给 end。我不是最新的时刻 js 的细节,但我想你可以做这样的事情:

    let end = moment(start).add(DIFFERENCE, 'days');
    

    这样您将为end 创建一个新的日期对象并将其添加到该对象中,而不是修改start


    附带说明,如果您不打算更改 startend 变量中的内容,则最好编写 const start ... 而不是 let start ...(这将防止某些错误蔓延在)。这不会阻止您通过它们的方法更改对象,它只会阻止您意外地重新分配它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 2023-03-19
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      相关资源
      最近更新 更多