PHP带时区日期时间转UNIX时间戳(MySQL插入用)求助
解决PHP将带时区日期转换为MySQL可用UNIX时间戳的问题
你用strtotime()失败的核心原因是:它默认优先识别月/日/年格式,而你的日期是日/月/年结构,导致解析出错。下面是两种可靠的解决办法:
方法一:直接使用DateTime类
DateTime类能正确解析带时区的日期字符串,通过getTimestamp()即可得到UNIX时间戳:
$dateStr = '29/05/2022 22:23:04 +00:00'; $dateObj = new DateTime($dateStr); $unixTs = $dateObj->getTimestamp(); // 输出示例:1653867784 echo $unixTs;
方法二:用date_create_from_format指定格式
如果要明确约束解析规则,避免格式歧义,可以用这个函数:
$dateStr = '29/05/2022 22:23:04 +00:00'; $dateObj = date_create_from_format('d/m/Y H:i:s P', $dateStr); $unixTs = $dateObj->getTimestamp(); echo $unixTs;
格式符d/m/Y H:i:s P分别对应:日/月/年、时:分:秒、时区偏移(如+00:00)。
MySQL插入说明
拿到的UNIX时间戳可以直接插入到MySQL的INT类型字段;如果你的字段是DATETIME类型,也可以用MySQL内置函数转换后插入:
INSERT INTO your_table (time_col) VALUES (FROM_UNIXTIME(?))
用预处理语句绑定$unixTs参数即可。
内容的提问来源于stack exchange,提问作者Joeme
相关产品推荐
相关产品推荐

