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

jQuery DateTimePicker问题:按Tab或失焦时时间自动减1小时

解决jQuery DateTimePicker选择时间后Tab/失焦自动减1小时的问题

我之前也碰到过类似的DateTimePicker时区相关的坑,你描述的这个每次按Tab或控件失焦就自动减1小时的情况,大概率是时区配置不匹配或者控件内部的时区转换逻辑出了问题,下面给你几个排查和解决的方向:

1. 显式指定控件时区

jQuery DateTimePicker默认可能会采用UTC时区,而你的页面或系统使用的是本地时区(比如东八区),当控件失去焦点时会自动执行时区转换,导致时间被减去了时差。你可以在初始化控件时强制指定时区:

$('#datetimepicker').datetimepicker({
    timezone: 'local', // 强制使用本地时区
    format: 'Y-m-d H:i:s' // 确保格式包含小时维度,避免转换歧义
});

如果你的业务场景需要特定时区,也可以直接指定时区标识,比如国内常用的:

timezone: 'Asia/Shanghai'

2. 禁用自动时区转换功能

部分版本的DateTimePicker会在失焦时自动触发时间转换逻辑,你可以尝试关闭这个默认行为:

$('#datetimepicker').datetimepicker({
    autoConvert: false, // 禁用自动时区转换
    useCurrent: false // 避免控件自动填充当前时间时的时区偏差
});

3. 排查事件绑定冲突

有可能是页面上其他自定义脚本绑定了blur或keydown(Tab键会触发这个事件)事件,无意中修改了DateTimePicker的数值。你可以先暂时移除页面上的其他自定义事件,测试是否还会出现时间自动减少的问题。如果确认是事件冲突,可以给DateTimePicker的事件添加阻止冒泡:

$('#datetimepicker').on('blur keydown', function(e) {
    if (e.keyCode === 9) { // 针对Tab键事件
        e.stopPropagation();
    }
});

4. 检查控件版本是否存在bug

如果以上方法都无效,可能是你使用的DateTimePicker版本本身存在时区转换的bug。可以尝试升级到最新的稳定版,或者回退到之前没有出现这个问题的版本。

额外测试小技巧

你可以在控制台打印控件的原始值和转换后的值,帮助定位问题根源:

$('#datetimepicker').on('change blur', function() {
    console.log('页面显示值:', $(this).val());
    console.log('控件内部存储值:', $(this).data('DateTimePicker').date());
});

通过对比这两个值,你可以清楚看到是否是时区转换导致的时间偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:48:59