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

PHP时间判断IF条件不生效直接进入ELSE分支,求正确判断当前时间是否超过指定时间的方法

问题原因与修复方案

1. 首要问题:时区未配置

PHP默认使用服务器系统的时区,若未手动设置为中国时区,date()函数获取的小时数会和北京时间存在偏差,直接导致判断逻辑错误。
修复方法:在你的PHP代码最顶部添加时区设置代码:

<?php
// 配置为中国北京时间时区,必须放在所有date()函数调用之前
date_default_timezone_set('Asia/Shanghai');

2. 第二个问题:判断逻辑和业务提示不匹配

你当前代码里判断条件是date('H') > 12,但ELSE分支的提示是「仅允许每天下午6点后填写状态」,下午6点对应24小时制的18点,两者逻辑完全不符,是直接触发ELSE分支的核心原因。
根据你的实际需求修改判断条件即可:

  • 如果确实要超过中午12点就允许访问,修改条件为(包含12点整的情况):
if (date('H') >= 12) {
  • 如果要和提示一致,要求下午6点后才能访问,修改为:
if (date('H') >= 18) {

额外优化建议

你当前的SQL查询直接拼接$id变量,存在SQL注入风险,建议修改为预处理查询:

// 替换原有查询逻辑
$stmt = mysqli_prepare($con, "SELECT * FROM patient_diary WHERE patient_id = ? AND date = ?");
mysqli_stmt_bind_param($stmt, "ss", $id, $myDate);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$count = mysqli_num_rows($result);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:45:05