Javascript Moment.js增加了5年
我有一个开始时间和结束时间,它从fullCalendar DrageEvent传递到form。 我需要能够通过文本框更改开始/结束时间 功能:Javascript Moment.js增加了5年,javascript,jquery,jquery-ui,fullcalendar,momentjs,Javascript,Jquery,Jquery Ui,Fullcalendar,Momentjs,我有一个开始时间和结束时间,它从fullCalendar DrageEvent传递到form。 我需要能够通过文本框更改开始/结束时间 功能: $("#startt").on("change", function() { console.log("CH") $("#phpstart").val( moment($("#phpstart").val(), "YY-MM-DD HH:mm:ss").format("YYYY-MM-DD") + " "
$("#startt").on("change", function() {
console.log("CH")
$("#phpstart").val(
moment($("#phpstart").val(), "YY-MM-DD HH:mm:ss").format("YYYY-MM-DD") +
" " +
moment($(this).val(), "HH:mm").format("HH:mm:ss"))
})
在第一次改变之后,一切都很好。但是在第二次改变之后,我得到了+5年。
图片:
更新
错误在
format("YYYY-MM-DD")
+5当YY被格式化为YYYY时,在第二次触发函数后,发生了变化您的代码读取到
$('#phpstart')。val()
的格式应为YY-MM-DD HH:MM:ss
:
moment($("#phpstart").val(), "YY-MM-DD HH:mm:ss")
但随后您将$('#phpstart').val()
设置为YYYY-MM-DD HH:MM:ss的格式,如下所示:
$('#phpstart.val(
moment($("#phpstart").val(), "YY-MM-DD HH:mm:ss").format("YYYY-MM-DD") +
" " +
moment($(this).val(), "HH:mm").format("HH:mm:ss"))
);
这就是为什么它被打破了,特别是在第一次改变之后。始终保持一致的格式,以便$(“#phpstart”).val()
中的日期格式始终保持一致。那么,您有了答案吗?如果您已将问题隔离到脚本中的错误,则在库的github页面上设置问题可能会有所帮助。一定要包括复制的步骤,JSFIDLE也会很棒。听起来像$(“#phpstart”).val()
不是YY-MM-DD HH:MM:ss
是的,也许把今年的20xx读作xx15部分,因此获得了5年。这不是库中的错误,你的逻辑很糟糕,请看下面的答案。是的,我算出来了,经过实验!但是无论如何,为什么还要+5因为你告诉momentjs
一个看起来像2015-01-01 12:00:00
的日期是格式YY-MM-DD HH:MM:ss
,并且momentjs
试图解析它。你可以想象,它把2015
读作20
(因为它只预期两位数的年份),当它只预期两位数的年份时,它预期这两位数是本世纪的最后两位数,并自动在前两位数前加上-因此,20
从2015
变为2020
。让我们明确一点,这不是momentjs
逻辑中的错误,你告诉了它应该期待什么,然后又给了它其他东西。谢谢你,现在我明白了!)