【问题标题】:Changing date format, php echo from postgresql always return "Date(1970, 01, 01)"更改日期格式,来自 postgresql 的 php echo 始终返回 "Date(1970, 01, 01)"
【发布时间】:2017-10-31 12:56:53
【问题描述】:
    <?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,"日期(1970, 01, 01)"],[9,"日期(1970, 01, 01)"],...]

我有点卡在这里,请帮助。 postgres 中的数据类型是日期。 2017-10-28

【问题讨论】:

    标签: php arrays postgresql date format


    【解决方案1】:

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

    $formatdate = date('Y, m, d',$date); 行中使用date_format() 而不是date()

    所以你的代码可以是:

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

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

    【讨论】:

    • $formatdate = date_format($date, 'Y, m, d');作品。谢谢
    【解决方案2】:

    1、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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 2011-09-09
      • 2023-03-03
      相关资源
      最近更新 更多