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

PHP:WordPress中文章修改时间与当前时间的60秒内比较逻辑问题及解决

解决WordPress中判断文章是否60秒内修改的逻辑问题

首先,咱们来拆解下你代码里的几个关键问题,这些问题直接导致了逻辑判断出错:

  1. 时区设置位置错误:date_default_timezone_set应该放在所有时间计算的最前面,否则你获取的修改时间和当前时间可能会基于不同时区,导致差值计算完全不准。
  2. 时间戳转换与逻辑判断混乱:
    • 你拼接get_the_modified_date()和get_the_modified_time()再转时间戳,其实WordPress有现成的get_the_modified_timestamp()函数,直接返回修改时间的时间戳,更可靠也更简洁。
    • 原代码里的$plus_datetime计算完全没有意义,0*0*0*60等于0,判断修改时间戳是否小于等于0不符合实际(修改时间肯定是有效的时间,不会小于等于0)。
    • if条件里的($curr_datetime < strtotime($mod_datetime)) > $plus_datetime属于逻辑错误:$curr_datetime是字符串格式的时间,和时间戳直接比较类型不匹配;而且用布尔值(比较结果)和数值比较也完全不符合你的需求。

正确的实现思路

核心逻辑其实很简单:计算当前时间戳与文章修改时间戳的差值,判断差值是否≤60秒。

修正后的代码

<?php
// 先设置时区,确保所有时间计算统一
date_default_timezone_set('Europe/Warsaw');

// 获取文章修改时间的时间戳(WordPress内置函数,直接返回时间戳更可靠)
$mod_timestamp = get_the_modified_timestamp();
// 获取当前时间戳
$curr_timestamp = time();

// 计算时间差(当前时间 - 修改时间,单位:秒)
$time_diff = $curr_timestamp - $mod_timestamp;

// 判断是否在60秒或更短时间内修改过(加≥0避免时区/系统时间偏差导致的异常)
if ($time_diff <= 60 && $time_diff >= 0) {
    echo 'True';
} else {
    echo 'False at all';
}
?>

代码解释

  • 用get_the_modified_timestamp()直接获取修改时间戳,避免了字符串拼接和转换可能出现的格式问题。
  • 计算$curr_timestamp - $mod_timestamp得到时间差,只要差值在0到60秒之间,就判定为“最近60秒内修改”。
  • 逻辑清晰直接,没有多余的复杂判断,后续维护和排查问题也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:18:12