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

如何从DatePicker获取日期?代码返回1970/1/1并抛异常求助

解决DatePicker获取日期返回1970/1/1的问题

我来帮你搞定这个问题——你遇到的1970年日期和异常提示,核心原因是页面首次加载时就直接处理了未提交的表单参数,具体细节和修正方案如下:

问题根源

当页面第一次打开时,表单还没有被提交,$_REQUEST['calendar']根本不存在(或者是空值)。这时候strtotime($_REQUEST['calendar'])会返回false,而date()函数会把false当作时间戳0来处理,对应的就是1970年1月1日。另外,直接访问未定义的$_REQUEST['calendar']还会触发"未定义索引"的警告,这就是你看到的异常来源。

修正后的完整代码

<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <title>日期选择器测试</title>
</head>
<body>
<form method="post">
    <input id="calendar" name="calendar" type="date">
    <button type="submit">提交日期</button> <!-- 新增提交按钮,用户才能触发表单提交 -->
</form>

<?php
// 仅在表单通过POST提交时才处理日期逻辑
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 检查日期参数是否存在且不为空
    if (isset($_POST['calendar']) && !empty($_POST['calendar'])) {
        $new_date = date('Y-m-d', strtotime($_POST['calendar']));
        echo "格式化后的日期:" . $new_date . "<br>";
        var_dump($_POST['calendar']);
    } else {
        echo "请选择一个有效的日期!";
    }
}
?>
</body>
</html>

关键改动说明

  • 新增提交按钮:你的原代码里没有提交按钮,用户根本没法触发表单提交,所以必须加上这个按钮才能传递日期参数。
  • 增加提交判断:通过$_SERVER['REQUEST_METHOD'] === 'POST'确保只有表单提交后才处理日期,避免页面加载时的无效逻辑。
  • 参数存在性检查:用isset()和!empty()判断日期参数是否有效,避免触发未定义索引的警告。
  • 用$_POST替代$_REQUEST:因为表单使用POST方法,直接用$_POST更明确,避免和GET/COOKIE参数混淆。

内容的提问来源于stack exchange,提问作者nir ben zino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:47:06