PHP中WordPress文章发布日期加2天遇非合规数值错误如何解决
错误原因
strtotime()函数参数使用错误:该函数第二个参数要求传入整数型时间戳作为计算基准,你直接传入字符串'+2 days'不符合参数要求,触发非数值类型报错。- 日期格式存在解析歧义:你用
d/m/Y格式拿到的日期,strtotime()会默认把/分隔的日期识别为月/日/年格式,当日期中的日数值大于12时会解析失败返回false,也会引发后续格式转换报错。
修复方案
方案1:直接获取发布时间戳计算(最省心,避免格式解析问题)
WordPress 原生提供了直接获取文章发布时间戳的函数,可以跳过格式解析环节:
// 直接获取文章发布时间戳 $published_timestamp = get_post_time( 'U', false, get_the_ID() ); $published_date = date( 'd/m/Y', $published_timestamp ); echo 'Pub: ' . $published_date . '<br />'; // 以发布时间戳为基准加2天,再格式化输出 $expiry_date = date( 'd/m/Y', strtotime( '+2 days', $published_timestamp ) ); echo 'Exp: ' . $expiry_date . '<br />';
方案2:用DateTime类明确格式解析(更稳定,适合复杂日期操作)
$published_date = get_the_date( 'd/m/Y', get_the_ID() ); echo 'Pub: ' . $published_date . '<br />'; // 明确指定输入日期的格式,避免解析歧义 $date_obj = DateTime::createFromFormat( 'd/m/Y', $published_date ); $date_obj->modify( '+2 days' ); $expiry_date = $date_obj->format( 'd/m/Y' ); echo 'Exp: ' . $expiry_date . '<br />';
内容的提问来源于stack exchange,提问作者Huw Rowlands
相关产品推荐
相关产品推荐

