php - 如何解决 PHP date() NULL 值 1969?

标签 php mysql date

c我在表单上使用 jQuery 日历日期选择器。未填写日期时,始终显示“1969-12-31”值。我不想显示这个值,0000-00-00 对我来说很好。

我的 MySQL 日期列是 receive_dt DATE NOT NULL,

这是 PHP 文件中用于处理表单的代码片段。

...

$rcv_dt = $_POST['receive_dt'];
    list($year,$month,$day)=explode('/',$rcv_dt);
    $timestamp=mktime(0,0,0,$year,$month,$day);
    $receive_dt=date('Y-m-d',$timestamp);

..., receive_dt) VALUES (....,'$receive_dt')...

我尝试过 strtotime() 但没有成功。

$receive_dt=date('Y-m-d', strtotime($rcv_dt));

我什至将 MySQL reveive_dt 列更改为 DATE NULL,但仍然没有成功。

最佳答案

首先,事实上你得到的是 1969 年底而不是 1970 年初(“Unix 纪元”从 1970 年 1 月 1 日午夜开始)表明你有一些时区处理错误导致你“失败”一个小时,所以请注意。

现在,您看到这一点的原因是 PHP 的日期格式化函数将您提供的任何输入视为数字;如果你给它们一个空字符串,或null,这将被转换为数字0,并解释为Unix纪元的开始 - 1st Jan 1970。MySQL将如果您在填充列时尝试向其传递空字符串或 0 ,可能会执行类似的操作。

您需要做的是专门检测这种情况 - 如果您的应用程序实际上不应该将 1970 年 1 月 1 日作为输入,那么这很容易 - 并专门将 NULL 插入数据库而不是格式化日期。

关于php - 如何解决 PHP date() NULL 值 1969?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17115943/

相关文章:

php - 谷歌图表显示表单输入之外的可视化

php - 如何将 excel 文件附加到电子邮件中?

php - 计算与数据库的时间差

php - 显示单个日期,除非它们是连续日期

Mysql 按时间连接最新记录的表

c# - 在C#中比较两个日期并计算差值

PHP如何在方法内部使用类实例

php - 正则表达式将 URL 转换为链接而不会弄乱文本中的现有链接

mysql - 当我将 MySQL 数据库系统与 Jena2 一起使用时,出现 java.lang.NoSuchMethodError

Java Date 对象显示 future 的时间