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

Highcharts/JavaScript与MySQL月份不兼容问题修复求助

解决Highcharts折线图月份显示错误的问题

我完全懂你遇到的这个坑——就是PHP和JavaScript对月份索引的定义差异搞的鬼!PHP里月份是从1开始计数的(1代表1月,9代表9月),但JavaScript的Date.UTC()方法要求月份参数必须是0开始的(0对应1月,8对应9月),所以你把PHP里的9传进去,JS直接就当成10月来解析了。

给你一个简单直接的临时修复方案,只需要修改PHP中处理日期的部分就行,不用动JavaScript代码:

修改PHP日期处理逻辑

找到你代码里生成$datetime1的循环:

foreach ($dataDatum as &$value) {
    $datetime1[] = date('y, n, j, G, i, s', strtotime($value));
}

把它替换成下面的代码,手动将月份减1,转换成JS需要的0索引格式:

foreach ($dataDatum as &$value) {
    // 用DateTime对象解析日期,方便单独提取各个时间部分
    $date = new DateTime($value);
    $year = $date->format('y');
    $month = intval($date->format('n')) - 1; // 把1-12的月份转成0-11的JS格式
    $day = $date->format('j');
    $hour = $date->format('G');
    $minute = $date->format('i');
    $second = $date->format('s');
    // 重新拼接成JS能识别的参数格式
    $datetime1[] = "$year, $month, $day, $hour, $minute, $second";
}

为什么这个方法有效?

原来的代码里用date('n')获取的是1-12的月份数值,现在我们把它减1之后,9月就变成了8,传给Date.UTC()的时候就会被正确识别为9月了。

这个改动很小,完全符合你想要的临时修复需求,不需要重构整个代码结构,对你这种电子/单片机背景的开发者来说也容易理解和实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:38:15