duancongjue9202 2015-05-29 09:32
浏览 123
已采纳

日期始终显示1970年1月1日

This is my model

function insert_employee($data) {
    $query = $this->db->insert($this->table, $data);
    return $this->db->affected_rows();
}

This is my controller

function save_header() {
    if (!IS_AJAX) {
        display_nonajax_stop();
        exit;
    } else {
        $data = $this->input->post();
        $data = nullify_array($data);

        if ($data['emp_isretire'] == 'N') {
            $data['emp_retiredate'] = NULL;
        }

        $check = $this->m_employee->get_employee_row(array("emp_id" => $data['emp_id']));

        if ($check) {
            $result['message'] = "ID already exist. Please provide other ID";
            $result['status'] = 0;
            echo json_encode($result);
            die();
        }

        $data['emp_opid'] = $this->session->userdata('usr_name');
        $data['emp_update'] = date("Y-m-d H:i:s");
        $data['emp_birthdate'] = DateTime::createFromFormat(strtotime('Y-m-d', $data['emp_birthdate']));
        $data['emp_dtentry'] = DateTime::createFromFormat(strtotime('Y-m-d', $data['emp_dtentry']));
        $data['emp_dtprobation'] = DateTime::createFromFormat(strtotime('Y-m-d', $data['emp_dtprobation']));
        $data['emp_dtpermanent'] = DateTime::createFromFormat(strtotime('Y-m-d', $data['emp_dtpermanent']));
        $data['emp_dtleaving'] = DateTime::createFromFormat(strtotime('Y-m-d', $data['emp_dtleaving']));
        $data['emp_retiredate'] = DateTime::createFromFormat(strtotime('Y-m-d', $data['emp_retiredate']));

        $q = $this->m_employee->insert_employee($data);

        $result = array();
        if ($q > 0) {
            $result['message'] = "Data has been saved";
            $result['status'] = 1;
        } else {
            $result['message'] = "Database operation fail";
            $result['status'] = 0;
        }
        echo json_encode($result);
    }
}

I don't know where did I go wrong, it starts to return to 1970-01-01 when the inputs are like this:

1992-05-11, etc.

But it formats as expected when I input like this:

1992-05-01, 1992-05-02, 1992-05-03, etc., until 1992-05-09.

It seems like the error starts when I input a date more than 09 like 10 or more.

What am I doing wrong and how can I resolve it?

  • 写回答

3条回答 默认 最新

  • dsdv76767671 2015-05-29 10:02
    关注

    Its because you were creating a wrong format within your code

     $data['emp_birthdate'] = DateTime::createFromFormat('d/m/Y', $data['emp_birthdate']);
                                                          ^^^^^^
    

    should be

    $data['emp_birthdate'] = DateTime::createFromFormat('Y-m-d', $data['emp_birthdate']);
                                                         ^^^^^^
    

    If your date is 1992-05-11 then your date format is Y-m-d not d/m/Y

    Edited

    Its because you were converting it into timeStamp using strtotime instead you need to use it as

    $data['emp_birthdate'] = DateTime::createFromFormat(strtotime('Y-m-d', $data['emp_birthdate']));
                                                        ^^^^^^^^^^                               ^^
    

    should be

    $data['emp_birthdate'] = DateTime::createFromFormat('Y-m-d', $data['emp_birthdate']);
    

    If your error_reporting is on then you might be getting an error

    Notice: A non well formed numeric value encountered in

    Warning: DateTime::createFromFormat() expects at least 2 parameters, 1 given in

    Fatal error: Call to a member function format() on a non-object in

    Check Docs

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)