更改日期格式,来自postgresql的php echo始终返回“Date(1970,01,01)”

时间:2017-10-31 12:56:53

标签: php arrays postgresql date format

    <?php


header('Content-Type: application/json; charset=utf-8');
$db = pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=blabla");

$result = pg_query($db,"SELECT kv.ph, kv.date FROM public.kv ORDER BY date DESC LIMIT 5");

$return = array();
while ($row = pg_fetch_array($result)) {

$test = $row[1];
$date = DateTime::createFromFormat('y-m-d', $test);
$formatdate = date('Y, m, d',$date);
    $return[] = array((int)$row[0],"Date($formatdate)");

} 

pg_close($db); 


echo $data=json_encode($return);
?>

我需要回声如下:
 [[6,“日期(2017年,10月5日)”,[9,“日期(2017年,9月30日)”],......] 我明白了:
[[6,“Date(1970,001,01)”],[9,“Date(1970,001,01)”],...]

我很少被困在这里,请帮忙。 postgres中的数据类型是日期。 2017年10月28日

2 个答案:

答案 0 :(得分:1)

date()函数中第二个参数出错。那必须是int但是对象DateTime给出。

date_format()行中使用date()代替$formatdate = date('Y, m, d',$date);

所以你的代码可以是:

$formatdate = date_format($date, 'Y, m, d');

$formatdate = $date->format('Y, m, d');

答案 1 :(得分:1)

1st,DateTime :: createFromFormat返回Datetime objext

第二,我认为,从db你收到4位数的年份,所以你需要使用格式Y

$date = DateTime::createFromFormat('Y-m-d', '2017-10-05');
echo $date->format('Y, m, d'); .. 2017, 10, 05