PHP中如何格式化ACF传入的时间并判断webinar日期是否为未来时间
问题根源
你当前的代码存在3个核心错误:
- 单引号不解析PHP变量:你用单引号包裹
$webinar_date $webinar_time,PHP不会把里面的变量替换为实际的日期、时间值,导致strtotime接收的是无效字符串,返回false,后续格式化的时间完全错误。 - 全角引号语法错误:代码中使用了中文全角引号
‘’,PHP无法识别,会直接抛出语法错误,需要替换为半角英文引号''/""。 - 字符串比对的潜在风险:把时间格式化为字符串后再比对,虽然逻辑合法,但不如直接比对时间戳高效,也容易出现格式不匹配导致的比对错误。
修复后可用代码
// 从ACF获取日期、时间值,确认字段返回格式分别为F j, Y、g:i a $webinar_date = get_field('webinar_date'); $webinar_time = get_field('webinar_time'); // 拼接后转换为时间戳,这里用双引号才能解析内部变量 $webinar_timestamp = strtotime("$webinar_date $webinar_time"); // 获取当前时间的时间戳,自动适配站点时区 $now_timestamp = time(); // 直接比对时间戳,逻辑更简洁 if ($webinar_timestamp >= $now_timestamp) { echo $webinar_date; echo ' ' . $webinar_time; }
可选优化
如果要规避时区偏差问题,可以提前统一设置脚本时区:
// 替换为你站点实际使用的时区,比如Asia/Shanghai date_default_timezone_set('Asia/Shanghai');
内容的提问来源于stack exchange,提问作者May Hitchings
相关产品推荐
相关产品推荐

