You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FullCalendar v3.10调用gotoDate跳转日期出现日月颠倒故障排查

问题根因

  • FullCalendar v3的gotoDate方法优先接收Moment对象或ISO 8601标准格式(YYYY-MM-DD)的日期字符串,你传入DD/MM/YYYY格式的字符串时,FullCalendar会默认按照美式MM/DD/YYYY规则解析,直接导致日月属性颠倒。
  • 补充:初始代码存在低级错误:已经把输入值赋值给res变量,后续又错误调用res.val(),导致日期解析失败,FullCalendar自动 fallback 到当前日期,所以后台才会收到当日的start/end参数。

正确修改方案

第一步:修改前端跳转逻辑,直接传入Moment对象

不要自行格式化字符串传给gotoDate,直接把解析好的Moment对象传入即可,避免字符串解析歧义:

$(document).ready(function () {
    $("#btnsearch").click(function (e) {
        // 阻止asp:Button默认提交表单行为,避免页面刷新
        e.preventDefault();
        var res = $("#txtSearch").val().trim();
        // 按输入的DD/MM/YYYY HH:mm格式严格解析,开启严格模式避免自动容错
        var targetDate = moment(res, "DD/MM/YYYY HH:mm", true);
        // 非法日期校验
        if (!targetDate.isValid()) {
            alert("请输入正确的日期格式:DD/MM/YYYY HH:mm");
            return;
        }
        // 直接传入Moment对象,不需要额外format转换
        $("#calendar").fullCalendar('gotoDate', targetDate);
    });
});

第二步:统一前后端日期传输格式(可选,彻底避免日期解析错乱)

如果后台接收FullCalendar自动传入的start/end参数时也存在格式歧义,可在FullCalendar初始化时添加配置,强制用ISO 8601格式传输日期:

$('#calendar').fullCalendar({
    // 其他原有配置保持不变
    eventSource: {
        url: 'JsonResponse.ashx',
        // 强制传给后台的日期为ISO标准格式
        startParam: 'start',
        endParam: 'end',
        format: 'YYYY-MM-DD HH:mm:ss'
    }
});

后台C#接收参数时直接按yyyy-MM-dd HH:mm:ss格式解析即可,完全消除区域格式差异导致的日期错乱问题。

内容的提问来源于stack exchange,提问作者ISO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:54:01