Javascript Moment.js增加了5年

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") + " "

我有一个开始时间和结束时间,它从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") +
        " " +
        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
逻辑中的错误,你告诉了它应该期待什么,然后又给了它其他东西。谢谢你,现在我明白了!)