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

如何在jQuery Datepicker中将服务器日期设为当前显示日期?

解决jQuery Datepicker显示服务器日期而非客户端日期的问题

我来帮你搞定这个问题!你遇到的核心问题是日期格式解析不匹配——jQuery UI Datepicker默认对字符串日期的解析逻辑和你传入的dd/mm/yyyy格式不兼容,导致你设置的服务器日期被识别为无效,最终 fallback 到了客户端的当前日期。

问题原因

当你直接给setDate或defaultDate传入"26/03/2018"这样的字符串时,Datepicker内部会用JavaScript原生的Date构造函数去解析它。但原生Date对非标准格式(比如dd/mm/yyyy)的解析行为不一致,大部分浏览器会把26/03/2018当成无效日期(因为26不可能是月份),所以就自动用客户端的当前日期了。

解决方案:用Date对象或指定格式解析日期

有两种可靠的方法可以解决这个问题:

方法1:手动创建Date对象

直接构造一个符合JavaScript标准的Date实例(注意月份是从0开始计数的,3月对应2),再传给setDate:

$(function () {
    $('.temp').datepicker({
        showWeek: true,
        dateFormat: "dd/mm/yy",
        changeMonth: true,
        changeYear: true
    });
    // 构造服务器日期的Date对象:年, 月(0-based), 日
    const serverDate = new Date(2018, 2, 26);
    $(".temp").datepicker("setDate", serverDate);
});

方法2:用Datepicker的parseDate方法解析

利用$.datepicker.parseDate方法,按照你设置的dateFormat来解析字符串,确保解析结果正确:

$(function () {
    $('.temp').datepicker({
        showWeek: true,
        dateFormat: "dd/mm/yy",
        changeMonth: true,
        changeYear: true
    });
    // 用指定格式解析服务器日期字符串
    const serverDateStr = "26/03/2018";
    const serverDate = $.datepicker.parseDate("dd/mm/yy", serverDateStr);
    $(".temp").datepicker("setDate", serverDate);
});

额外提示

如果你的服务器日期是从后端动态获取的,建议让后端返回ISO格式的日期字符串(比如"2018-03-26")或者直接返回年、月、日的数值,这样解析起来更稳定,不容易踩格式的坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:35:29