我可以将使用useState设置的日期转换为ISO字符串吗?

zwghvu4y  于 2022-10-21  发布在  其他
关注(0)|答案(1)|浏览(136)

我正在和NextJs做一个项目。现在,我正在创建一个页面,其中用户正在使用useState和Fetch POST创建活动。我认为一切都在某种程度上正常运行,但我对日期有问题。
当我尝试发布时,我收到一个错误消息:“无法将JSON值转换为System.DateTime”。
我终于明白,我需要根据ISO发布一个日期。
我在MUI的Textfield中使用useState设置了一个日期。我希望将该日期转换为ISO。我尝试了不同的解决方案,但都没有奏效。
为了进一步说明,下面是我的代码的(部分)内容:

import {Textfield} from "@mui/material";

function CreateActivity {

  var today = new Date();
  var dd = String(today.getDate()).padStart(2, "0");
  var mm = String(today.getMonth() + 1).padStart(2, "0");
  var yyyy = today.getFullYear();

  today = yyyy + "-" + mm + "-" + dd;

  const [activityDate, setActivityDate] = useState(today + "T10:30");

  return (

  <div className={styles.textBox}>
     <div>Date, time</div>
        <TextField
           variant="standard"
           id="datetime-local"
           type="datetime-local"
           defaultValue={today + "T10:30"}
           InputLabelProps={{
              shrink: true,
           }}
           onChange={(event) => setActivityDate(event.target.value)}
        />
     </div>
  )
}
h79rfbju

h79rfbju1#

我设法解决了这个问题。
我所做的是将new date()放入useState:

const [activityDate, setActivityDate] = useState(new Date());

我是这样设定的:

<div className={styles.textBox}>
            <div>Date, time</div>
            <TextField
              variant="standard"
              id="datetime-local"
              type="datetime-local"
              defaultValue={today + "T10:30"}
              InputLabelProps={{
                shrink: true,
              }}
              onChange={(event) => setActivityDate(event.target.value)}
            />
          </div>

然后将值放入如下对象中:

const activityDateObject = new Date(activityDate + "Z");

相关问题