DateTime函数unix时间戳转换错误

时间:2016-12-13 05:32:45

标签: php

我正在使用php的DateTime函数。我从格式为d-m-Y的日历中获取日期,并通过ajax将其传递给我的函数。我正在把这个日期直到这一步。 当我尝试使用以下方式将日期存储为unix格式时:

$ai_ff_date=DateTime::CreateFromFormat('d-m-Y', $data['date']); 

$final_date=$ai_ff_date->format('U');

存储的日期错误。假设我通过ajax传递的日期是26-12-2016,然后存储在数据库27-12-2016中。为什么计算一天再输入。

2 个答案:

答案 0 :(得分:0)

使用此代码:

$date = date('Y-m-d H:i:s', strtotime('-1 day', $stop_date));
$ai_ff_date=DateTime::CreateFromFormat('d-m-Y',$date); 
$final_date=$ai_ff_date->format('U');

请检查变量(代码未测试)

答案 1 :(得分:0)

您可能希望将日期格式转换为"Y-m-d"首先,然后调用DateTime()构造函数。但是,由于您要做的只是获取TimeStamp,您也可以直接执行此操作而不使用DateTime。下面的代码段显示了这里的含义:

<?php

    $data   =  ['date'=>"13-12-2016"];    //<== JUST AN EXAMPLE FOR TESTING!!! 
    // SIMPLY CONVERT THE DATE TO Y-m-d FIRST.
    $dateYMD    = date("Y-m-d", strtotime($data['date']));

    // THEN USE DateTime CONSTRUCTOR TO CREATE A NEW DateTime INSTANCE
    // AND THEN RUN THE FORMAT YOU WISH::
    $final_date = (new DateTime($dateYMD))->format('U');


    var_dump($final_date);                   //<== YIELDS: string '1481583600' (length=10) 
    var_dump(date("Y-m-d", $final_date));    //<== YIELDS: string '2016-12-13' (length=10)