簡體   English   中英

根據日期顯示不同的時間

[英]Show different times based on day

我試圖根據日期排除不同的時間,但無論我選擇什么日期,時間都被禁用。 例如,如果我選擇 9 月 28 日,則應禁用 12 點鍾。 如果我選擇 10 月 3 日,那么下午 1 點應該被禁用,但是 12 和 1 從一開始就被禁用並且無論我選擇什么日期都保持這種狀態。

https://hacker0x01.github.io/react-datepicker

  const isSunday = (date) => {
    const day = getDay(date);
    return day !== 0;
  };

  let excluded = [
    {
      time: "12",
      date: "28/09/2020",
    },
    {
      time: "13",
      date: "03/10/2020",
    },
  ];


    <DatePickerField
      filterDate={isSunday}
      minTime={new Date(new Date().setHours(8, 0, 0))}
      maxTime={new Date(new Date().setHours(17, 0, 0))}
      excludeTimes={excluded.map((exclude, index) => {
        return setHours(
          setMinutes(new Date(), 0),
          parseInt(exclude.time)
        );
      })}
      timeIntervals={60}
      maxDate={addDays(new Date(), 3)}
      dateFormat="d/M/Y HH:mm"
      timeFormat="HH:mm"
      name="time-to-contact"
      label="Required Date *"
    />

問題是你總是在excludeTimes道具中excluded 僅當所選日期為日期時才需要返回時間。 這樣的事情應該有效。 (也通過添加const [value, setValue] = useState(); )。

<DatePickerField
  filterDate={isSunday}
  minTime={new Date(new Date().setHours(8, 0, 0))}
  maxTime={new Date(new Date().setHours(17, 0, 0))}
  excludeTimes={excluded.map((exclude) => {
    const excDate = new Date(exclude.date);
    if (
      value &&
      excDate.getDate() === value.getDate() &&
      excDate.getFullYear() === value.getFullYear() &&
      excDate.getMonth() === value.getMonth()
    ) {
      return new Date(new Date().setHours(exclude.time, 0, 0));
    }
    return null;
  })}
  timeIntervals={60}
  maxDate={addDays(new Date(), 3)}
  dateFormat="d/M/Y HH:mm"
  timeFormat="HH:mm"
  name="time-to-contact"
  label="Required Date *"
  onChange={(e) => {
    setValue(new Date(e));
  }}
  selected={value}
    />

此外,您的日期格式不適合 JS,它應該是:

  const excluded = [
    {
      time: "12",
      date: "09/28/2020"
    },
    {
      time: "13",
      date: "10/03/2020"
    }
  ];

這是一個工作示例的鏈接:https ://codesandbox.io/s/competent-smoke-4nv1e?file=/src/App.js

要為特定日期(假設是星期一)添加排除時間,您可以使用以下命令:

const excluded = [
  {
    time: "12",
    day: 1
  }, 
]

並將道具設置為:

excludeTimes={excluded.map((exclude) => {
  if (value && value.getDay() === exclude.day) {
    return new Date(new Date().setHours(exclude.time, 0, 0));
  }
  return null;
})}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM