另一个PHP dateTime格式问题no2

时间:2017-07-03 18:48:31

标签: php

我一直在浏览这个问题的所有相关链接,但似乎没有什么对我有用......除非我将静态dateTime传递给转换,否则下面的代码不会返回任何内容。我从SQL Db获取dateTime字符串,格式为Y-m-d H:i:s。示例:2017-07-03 09:00:00

以下代码工作正常,并在每个相应的表格单元格中粘贴相同的dateTime。

 <?php
 if ($sOtaskCount > 0) {
 echo "<tr><th>ID</th><th>Date Due</th><th>Description</th></tr>";
    // output data of each row
    while($row = sqlsrv_fetch_array( $sOtasks, SQLSRV_FETCH_ASSOC)) {
     $date = date_create_from_format('Y-m-d H:i:s','2017-07-03 09:00:00']);
     echo "<tr><td>" . $row["ID"]. "</td><td>" . date_format($date,'Y-m-d H:i:s'). "</td><td> " . $row["Description"]. "</td></tr>";
      }
   } 
   else {
       echo "No Other Tasks to Display!";
        }
  ?>

这是相同的代码,但是从$ row中提取dateTime,这不会返回任何内容。 Db(ID和描述)中的所有其他条目都将正确返回。

 <?php
 if ($sOtaskCount > 0) {
 echo "<tr><th>ID</th><th>Date Due</th><th>Description</th></tr>";
    // output data of each row
    while($row = sqlsrv_fetch_array( $sOtasks, SQLSRV_FETCH_ASSOC)) {
     $date = date_create_from_format('Y-m-d H:i:s',$row["Date_Due"]);
     echo "<tr><td>" . $row["ID"]. "</td><td>" . date_format($date,'Y-m-d H:i:s'). "</td><td> " . $row["Description"]. "</td></tr>";
      }
   } 
   else {
       echo "No Other Tasks to Display!";
        }
  ?>

提前致谢:)

1 个答案:

答案 0 :(得分:0)

由于来自$row的dateTime值没有返回任何内容并且静态值有效,因此问题似乎来自$row对象本身。您可以执行print_r($row)查看它是否包含预期数据,以及用于日期时间对象的正确密钥(如AbraCadaver所建议的那样)。

另外,正如rickdenhaan所指出的那样,为什么不按原样离开$row["Date_Due"],因为它已经从数据库中以Y-m-d H:i:s格式存在?

--- 编辑基于print_r($row) ---

的结果

print_r($row)的输出中,您应该使用

访问dateTime

$row['Due_Date']->date

因为$row['Due_Date']本身是一个对象,而不是一个字符串,这就是你直接使用它时获得“Unix开始时间”的原因。