PHP strtotime空值返回当前时间 如何让空表单时间返回空值
PHP表单空时间转换返回当前时间问题修复
问题根因
出现空值时返回当前时间的原因有两点:
- 表单未选择时间时传递的参数不一定是纯空字符串,可能是带前后空格的空白串、
null、时间输入框默认空占位值,原有松散判断$da1 == ""无法覆盖所有空场景 strtotime()接收到无法解析的参数时会返回false,date()接收到false作为时间戳参数时,会默认读取当前系统时间生成格式化字符串,直接导致空值场景输出当前时间
修复方案
先对传入值做去空白处理,通过严格比较判断空值,同时增加strtotime()解析结果校验,只有解析成功时才做12小时制格式转换,所有空值、解析失败场景统一返回空字符串。
完整可直接替换的代码:
// 去除值前后的空白字符,避免空格类空值漏判 $da1 = trim($da1); if ($da1 === '') { $da1 = ''; } else { $parsedTime = strtotime($da1); // 仅当时间解析成功时执行格式转换,解析失败直接置空 $da1 = $parsedTime ? date('h:i a ', $parsedTime) : ''; }
如果需要精简写法,也可以用三元表达式实现相同逻辑:
$da1 = trim($da1); $da1 = $da1 === '' ? '' : ($parsedTime = strtotime($da1)) ? date('h:i a ', $parsedTime) : '';
优化说明
- 使用
===严格相等判断空值,避免松散比较下数字0、字符串"0"这类合法值被误判为空 - 强制校验
strtotime()返回结果,从根源避免解析失败时date()自动取当前时间的问题 - 前置
trim()处理,覆盖表单传值带前后不可见空白字符的场景
内容的提问来源于stack exchange,提问作者BrownGordon
相关产品推荐
相关产品推荐

