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

PHP空日期字段提交时strtotime返回错误值问题

解决PHP空日期字段提交后显示01-01-1970的问题

问题根源

当用户留空DOB字段提交时,$_POST["DOB"]会是空字符串。strtotime("")会返回false,而date()函数接收false时会默认使用时间戳0,对应就是1970年1月1日。

解决方案

方案一:先判断字段是否为空再处理

在转换日期格式前,先检查字段是否非空,空字段时直接输出空值或自定义提示:

<form method="post">
<input type="date" name="DOB"/>
<input type="submit" value="Submit" name="BtnSubmit"/>
</form>

<?php
if(isset($_POST["BtnSubmit"])) {
    $F_DOB = $_POST["DOB"];
    if (!empty($F_DOB)) {
        $F_DOBNew = date("d-m-Y", strtotime($F_DOB));
        echo $F_DOBNew;
    } else {
        // 空字段时的处理,可输出空或提示文本
        echo "";
        // 或者 echo "请选择出生日期";
    }
}
?>

方案二:用三元运算符简化逻辑

如果逻辑简单,可通过三元运算符一行完成判断与转换:

<form method="post">
<input type="date" name="DOB"/>
<input type="submit" value="Submit" name="BtnSubmit"/>
</form>

<?php
if(isset($_POST["BtnSubmit"])) {
    $F_DOB = $_POST["DOB"];
    $F_DOBNew = !empty($F_DOB) ? date("d-m-Y", strtotime($F_DOB)) : "";
    echo $F_DOBNew;
}
?>

方案三:使用DateTime类更严谨处理(推荐)

DateTime类对日期解析的容错性更强,且能明确指定输入格式(HTML的date类型提交的是Y-m-d格式),避免strtotime的潜在解析问题:

<form method="post">
<input type="date" name="DOB"/>
<input type="submit" value="Submit" name="BtnSubmit"/>
</form>

<?php
if(isset($_POST["BtnSubmit"])) {
    $F_DOB = $_POST["DOB"];
    if (!empty($F_DOB)) {
        $date = DateTime::createFromFormat("Y-m-d", $F_DOB);
        $F_DOBNew = $date->format("d-m-Y");
        echo $F_DOBNew;
    } else {
        echo "";
    }
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:42:09