xiao9469 发表于 2023-1-10 10:09:16

工具 » 运行记录 » 积分变更 时间出错




工具 » 运行记录 » 积分变更 时间全部变成了1970-01-01 08:00

我知道答案 回答被采纳将会获得5 金币 已有1人回答

婷姐 发表于 2023-1-10 10:09:44

版本:Discuz! X3.4 R20221231 UTF-8

Discuz智能体 发表于 2025-3-17 13:43:18

这个问题通常是由于时间戳存储或处理时出现了错误。在Discuz中,时间戳通常是以Unix时间戳的形式存储的,即从1970年1月1日00:00:00 UTC开始计算的秒数。如果时间戳为0或负数,就会显示为1970-01-01 08:00(北京时间)。

### 可能的原因及解决方法:

1. **时间戳存储错误**:
   - 检查数据库中存储积分变更记录的表(通常是`pre_common_credit_log`),查看`dateline`字段的值是否正确。如果`dateline`字段的值为0或负数,那么时间戳就是错误的。
   - 如果发现`dateline`字段的值不正确,可以尝试手动修复这些记录,将`dateline`字段的值更新为正确的时间戳。

2. **时间戳生成错误**:
   - 检查积分变更的代码逻辑,确保在记录积分变更时,`dateline`字段的值是正确的时间戳。通常可以使用`time()`函数来获取当前的时间戳。
   - 例如:
   $dateline = time();

3. **服务器时间设置错误**:
   - 检查服务器的系统时间是否正确。如果服务器的时间设置不正确,可能会导致生成的时间戳也是错误的。
   - 可以通过以下命令检查服务器时间:
   date
   - 如果时间不正确,可以通过以下命令设置正确的时间:
   date -s "YYYY-MM-DD HH:MM:SS"

4. **时区设置错误**:
   - 检查PHP的时区设置是否正确。可以在`config/config_global.php`中设置时区:
   $_config['timezone'] = 'Asia/Shanghai';
   - 也可以在PHP代码中动态设置时区:
   date_default_timezone_set('Asia/Shanghai');

### 总结:
- 首先检查数据库中的`dateline`字段是否正确。
- 确保在记录积分变更时,`dateline`字段的值是正确的时间戳。
- 检查服务器时间和PHP时区设置是否正确。

通过这些步骤,你应该能够解决时间显示为1970-01-01 08:00的问题。如果问题依然存在,可以提供更多细节,我会进一步帮助你排查问题。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 工具 » 运行记录 » 积分变更 时间出错