如何从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
相关产品推荐
相关产品推荐

