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

PHP中如何基于dd/mm/yy hh:mm格式的日期时间生成MySQL DateTime格式?

PHP中如何基于dd/mm/yy hh:mm格式的日期时间生成MySQL DateTime格式?

这问题我之前也碰到过,确实很容易踩坑——PHP默认的日期解析逻辑会把带/的日期当成月/日/年,所以咱们得明确告诉它原始格式才行,给你两种靠谱的解决办法:

方法一:用DateTime::createFromFormat(推荐)

这是最稳妥的方式,因为它能精准指定原始日期的格式,完全不会有歧义,而且PHP 5.2及以上版本都支持。

具体代码示例:

// 你的原始日期时间字符串
$originalDate = '15/05/24 14:00';

// 按照原始格式解析字符串,生成DateTime对象
$dateTime = DateTime::createFromFormat('d/m/y H:i', $originalDate);

// 格式化为MySQL要求的DateTime格式(YYYY-MM-DD HH:MM:SS)
$mysqlDate = $dateTime->format('Y-m-d H:i:s');

echo $mysqlDate; // 输出:2024-05-15 14:00:00

参数说明:

  • d/m/y H:i:对应你的原始格式,d代表两位日期,m代表两位月份,y代表两位年份(会自动补全为四位,比如24会变成2024),H是24小时制的小时,i是分钟。
  • Y-m-d H:i:s:MySQL DateTime要求的标准格式,Y是四位年份,m两位月份,d两位日期,后面跟小时、分钟、秒。

另外,为了避免原始格式错误导致程序报错,建议加个判断:

$originalDate = '15/05/24 14:00';
$dateTime = DateTime::createFromFormat('d/m/y H:i', $originalDate);

if ($dateTime) {
    $mysqlDate = $dateTime->format('Y-m-d H:i:s');
    echo $mysqlDate;
} else {
    // 处理格式错误的场景,比如提示用户输入正确格式
    echo '输入的日期时间格式不正确,请检查!';
}

方法二:用strtotime配合字符串替换(不推荐,但应急可用)

strtotime默认会把带/的日期解析成月/日/年,但如果把/替换成-,它就会按日-月-年来解析。不过这种方法依赖PHP的默认解析规则,遇到特殊格式可能出问题,所以只建议应急用。

代码示例:

$originalDate = '15/05/24 14:00';
// 把日期分隔符从/换成-
$formattedStr = str_replace('/', '-', $originalDate);
// 转成MySQL格式
$mysqlDate = date('Y-m-d H:i:s', strtotime($formattedStr));

echo $mysqlDate; // 输出:2024-05-15 14:00:00

总的来说,优先用第一种方法,精准控制解析规则,不容易出问题。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:49:38