如何使用Moment.js避免秒数超60导致MySQL存储错误?
解决Moment.js生成无效datetime(秒数超60)导致MySQL插入失败的问题
你的问题出在Moment.js的格式字符串写错了:
- 你用了
MM表示分钟,但MM在Moment里是月份(01-12); - 你用了
SS表示秒,但SS是毫秒的前两位(00-99);
这就导致当毫秒值大于等于60时,生成的"秒数"会超过59(比如你遇到的69),而MySQL的datetime类型只接受00-59的秒数,所以触发格式错误。
修正方案
把格式字符串中的MM改成mm(表示分钟),SS改成ss(表示秒):
const currentDate = moment().format("YYYY-MM-DD HH:mm:ss"); const onlyDate = moment(currentDate).format("YYYY-MM-DD"); formData.append("comment", comments.value); formData.append("fecha", currentDate); formData.append("idTesis", idTesisParam); formData.append("user", userId); formData.append("onlyDate", onlyDate); formData.append("estado", statusTesis); formData.append("aprobado", aprobado);
另外,onlyDate可以直接用moment().format("YYYY-MM-DD")生成,没必要先转成currentDate再解析,能减少不必要的计算:
const onlyDate = moment().format("YYYY-MM-DD");
关键格式区分(Moment.js)
MM:月份(01-12)mm:分钟(00-59)SS:毫秒(00-99)ss:秒(00-59)HH:24小时制小时(00-23)hh:12小时制小时(01-12)
内容的提问来源于stack exchange,提问作者user8282183292
相关产品推荐
相关产品推荐

