日期字段在 PHP 和 MySQL 中被重置

Posted

技术标签:

【中文标题】日期字段在 PHP 和 MySQL 中被重置【英文标题】:Date field is being reset in PHP and MySQL 【发布时间】:2013-09-08 20:36:59 【问题描述】:

当我尝试编辑表单中的某些字段时,日期被重置为 01-01-1970 01:00:00,但它第一次完美地从数据库中存储和检索其值。然后,当我编辑除日期以外的其他字段时,它会被重置。

在我的 jQuery 日期选择器下方:

<script>
$(document).ready(function()
    $("#policy_start_date").datepicker(
        numberOfMonths: 1,
        onSelect: function(selected) 
            $("#policy_end_date").datepicker("option","minDate", selected)
        
    );
    $("#policy_end_date").datepicker( 
        numberOfMonths: 1,
        onSelect: function(selected) 
            $("#policy_start_date").datepicker("option","maxDate", selected)
        
    );  
);
</script>

发布数据

$date_t=$_POST['policy_start_date'];
$datearr=explode('/',$date_t);

$month=$datearr[0];
$day=$datearr[1];
$year=$datearr[2];
$policy_start_date=$year."-".$month."-".$day;
//$policy_end_date   = $_POST['policy_end_date'];
$date_t=$_POST['policy_end_date'];
$datearr=explode('/',$date_t);

$month=$datearr[0];
$day=$datearr[1];
$year=$datearr[2];
$policy_end_date=$year."-".$month."-".$day;

【问题讨论】:

【参考方案1】:

这通常是因为存储在 db 中的格式和 datepicker 发送/接受的格式。

标准日期选择器格式是 09/03/2013 (m/d/y)。

当您回显数据时,文本框上会显示什么? 1. 2013 年 9 月 3 日(月/日/年) 要么 2. 2013-09-13 00:00:00 (Y-m-d H:i:s)

如果显示选项一 (1),那么我们肯定需要查看显示您使用的表单的代码。

如果显示选项二(2),那么您需要在回显到文本框之前对其进行格式化。 用这个,

$time = strtotime($date_stored_in_database);
$your_date = date('Y/m/d',$time);

strtotime 会将您存储在数据库中的日期转换为 UNIX TIMESTAMP,然后 date 函数会将其转换为您需要的格式。

【讨论】:

以上是关于日期字段在 PHP 和 MySQL 中被重置的主要内容,如果未能解决你的问题,请参考以下文章

使用 mysql 和 php 搜索除日期字段外的整个表

仅从日期时间字段(mysql)中提取日期并将其分配给 php 变量

PHP MySQL 日期差异

使用 MySQL/PHP 在字段中使用 now() 插入当前日期/时间

如何用php 在mysql的日期型数据中写入NULL

在mysql和php中按日期范围分组