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

使用human_time_diff无法显示时间差,请求排查问题原因

问题排查与解决方案

嘿,这个问题我之前也碰到过!问题出在human_time_diff()的参数类型上——它需要的是整数时间戳,但你传入的是字符串格式的日期(Y-m-d H:i:s),函数没法识别这种格式,所以才没有输出内容。

具体修正步骤:

  1. 将日期字符串转换为时间戳:用PHP的strtotime()函数把$commenttime转换成整数时间戳,这个函数能完美解析Y-m-d H:i:s格式的字符串。
  2. 添加异常判断:避免ACF字段为空或格式错误时出现报错,先检查字段值是否有效,再进行转换。
  3. 调用human_time_diff():此时传入时间戳参数,函数就能正常计算时间差了。另外,human_time_diff()的第二个参数默认就是当前时间戳,所以可以直接省略,简化代码。

完整修正代码:

<?php
// 获取ACF字段的日期字符串
$commenttime = get_sub_field( 'time', $postid );

// 验证字段值并转换为时间戳
if ( $commenttime && $comment_timestamp = strtotime( $commenttime ) ) {
    // 输出时间差,省略第二个参数则默认使用当前时间
    echo human_time_diff( $comment_timestamp ) . ' ago';
} else {
    // 字段为空或格式错误时的 fallback 提示
    echo 'Unknown time';
}
?>

额外说明:

  • strtotime()支持绝大多数标准日期格式,你的Y-m-d H:i:s完全符合要求,转换不会有问题。
  • 如果坚持要使用current_time('timestamp')作为第二个参数也是可以的,它会遵循WordPress站点设置的时区,和time()函数的系统时区有所区别,根据你的需求选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:17:45