reactjs - 为什么我的日期输入让我回到反应前一天
问题描述
我正在尝试提交一个带有输入的日期,但是当我提交它时,我又回到了前一天
这是我的以下代码:
const [title, setTitle] = useState("");
const [description, setDescription] = useState("");
const [date, setDate] = useState(new Date());
const [timestart, setTimeStart] = useState();
const [timeend, setTimeEnd] = useState();
const handleSubmit = async (event) => {
event.preventDefault();
const payload = {
title,
description,
date,
timestart,
timeend,
teamId: teamId,
};
const res = await axios.post("/api/v1/events/event", payload);
location.reload();
setShowCalendarCard(false);
};
return (
<div className="calendar-card-container">
<div className="calendar-card-event-date">
<input
type="date"
name="date"
onChange={(e) => setDate(e.target.value)}
/>
...
);
当我输入 2021 年 5 月 10 日,然后当我点击提交时,它让我回到 2021 年 5 月 9 日。我怎样才能解决这个问题?
我认为问题出在时区上。示例:当我输入日期时,输入的日期是 05/01/2021,然后点击提交。
然后我返回我的 postgres 数据库,它显示了 2021 年 4 月 30 日。所以基本上它在前一天倒退。
更新的事件后端模型:
这是我的事件模型:
"use strict";
module.exports = (sequelize, DataTypes) => {
const Events = sequelize.define(
"Events",
{
id: {
allowNull: false,
primaryKey: true,
defaultValue: DataTypes.UUIDV4,
type: DataTypes.UUID,
},
title: {
type: DataTypes.STRING,
allowNull: false,
},
description: {
type: DataTypes.STRING,
allowNull: false,
},
date: {
type: DataTypes.DATE,
allowNull: false,
},
timestart: {
type: DataTypes.TIME,
allowNull: false,
},
timeend: {
type: DataTypes.TIME,
allowNull: false,
},
},
{ tableName: "Events", timestamps: true }
);
Events.associate = function (models) {
Events.belongsTo(models.Team, {
foreignKey: "teamId",
});
Events.belongsTo(models.User, {
foreignKey: "creatorId",
});
};
return Events;
};
谢谢你帮助我。
解决方案
这实际上让你倒退了一个月。基本上,这个日期函数返回月份从 0 开始到 11 结束的月份。所以一月是 0,二月是 1,依此类推。因此,您必须检索月份并将其增加一。您可以从此处获取 JavaScript date() 函数参考。https://www.w3schools.com/js/js_date_methods.asp。
您还可以查看此链接https://www.w3schools.com/js/tryit.asp?filename=tryjs_date_getmonth他如何将一个数字添加到 getMonth() 方法返回的月份。
推荐阅读
- javascript - 当我在浏览器选项卡之间移动时,setInterval 停止反应
- reactjs - 无法使用 React 将电子商务数据发送到 Google Analytics
- amazon-web-services - AWS CDK:Fargate 服务的 Dynamo Db 访问
- android - Kotlin Retrofit 查询注释参数
- python - 如何在 Pandas 列中的特定单元格中添加连字符
- python - 如何使用套接字连接到 HTTPS?
- jenkins - 从构建参数在 Jenkins 管道阶段设置环境变量
- html - 通过 Shiny 应用程序中的 Twitter 共享小部件将 ggplot 图像附加到推文
- mysql - SQL 尝试在子查询中使用连接表中的列
- sparql - 当 SPARQL 中的分组结果为空时,防止 GROUP_CONCAT 返回空字符串