使用DirectoryPress插件时WordPress列表发布时间显示负数秒问题
问题:DirectoryPress列表发布日期显示负值(秒数异常)
在WordPress中使用DirectoryPress插件时,用户添加列表后,发布日期的秒数显示为负值,问题截图如下:
当前使用的代码片段:
$time = strtotime( $listing->post->post_date ); echo '<div class="publish_date">'.directorypress_time_ago($time).'</div>';
可能的原因
- 时区配置不匹配:WordPress默认将
post_date存储为UTC时间,若服务器本地时区与WordPress后台设置的时区不一致,strtotime()会错误地将UTC时间按本地时区解析,生成的时间戳可能晚于当前实际时间,导致directorypress_time_ago()计算时间差时出现负值。 directorypress_time_ago函数逻辑缺陷:该函数内部可能错误地用传入的时间戳减去当前时间戳(正确逻辑应为当前时间戳减去发布时间戳),直接导致时间差为负;或者处理时间单位转换时存在溢出、取反错误。- 服务器系统时间异常:若服务器本地时间比实际时间滞后,当前时间戳会小于
$listing->post->post_date转换后的时间戳,计算出的时间差自然为负。 - 时间格式解析错误:如果
$listing->post->post_date的格式不符合strtotime()的可解析标准(比如包含特殊字符、格式混乱),可能返回无效的时间戳(如未来的某个错误时间),进而引发负值问题。
内容的提问来源于stack exchange,提问作者gyt
相关产品推荐
相关产品推荐

