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

PHP中数据库日期字段与本地时间对比及时区切换问题

问题解答

一、筛选数据库中今天或未过期的记录

你可以直接在MySQL查询里把三个字段拼接成标准日期格式,再和当前日期做比较,这种方式效率更高,还能避免PHP与数据库的时区差异问题。示例SQL语句如下:

SELECT * 
FROM your_table_name
WHERE STR_TO_DATE(CONCAT(dateyear, '-', datemonth, '-', dateday), '%Y-%m-%d') >= CURDATE();

STR_TO_DATE会把拼接后的字符串转换为MySQL可识别的日期类型,CURDATE()是MySQL的当前日期函数,这样就能筛选出日期大于等于今天的记录(即未过期或当天的记录)。

如果想用PHP传递的日期来筛选,也可以这么做:
先在PHP中把日期拼成Y-m-d格式:

$today = date("Y-m-d");

然后用预处理语句执行SQL(更安全):

SELECT * 
FROM your_table_name
WHERE STR_TO_DATE(CONCAT(dateyear, '-', datemonth, '-', dateday), '%Y-%m-%d') >= ?;

将$today绑定到查询参数即可。

二、英国服务器让date()输出美国东部时间

完全可以实现,只需要在调用date()函数前,将PHP的默认时区设置为美国东部时区:

// 设置时区为美国东部时间
date_default_timezone_set('America/New_York');

// 此时date()输出的就是美东时间
$year = date("Y");
$day = date("d");
$month = date("m");

注意:务必使用官方标准的时区标识符America/New_York,不要用EST这类缩写——缩写存在歧义,且无法自动适配夏令时切换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:12:44