另一个PHP日期时间格式问题2

另一个PHP日期时间格式问题2,php,Php,我一直在浏览与这个问题相关的所有链接,但似乎没有任何东西对我有用。。。除非我将静态日期时间传递给转换,否则下面的代码不会返回任何内容。我从一个SQL数据库获取一个日期时间字符串,格式如下Y-m-dh:I:s。示例:2017-07-03 09:00:00 下面的代码运行良好,并且在每个对应的表单元格中粘贴相同的dateTime <?php if ($sOtaskCount > 0) { echo "<tr><th>ID</th><th&g

我一直在浏览与这个问题相关的所有链接,但似乎没有任何东西对我有用。。。除非我将静态日期时间传递给转换,否则下面的代码不会返回任何内容。我从一个SQL数据库获取一个日期时间字符串,格式如下
Y-m-dh: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,这并没有返回任何内容。数据库中的所有其他条目(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!";
        }
  ?>


提前感谢:)

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

另外,正如rickdenhaan所指出的,既然db中已经有了
Y-m-d H:i:s
格式,为什么不让
$row[“Date\u Due”]
保持原样呢

---根据打印($row)的结果进行编辑---

从打印($row)的输出中,您应该使用

$row['Due_Date']->Date


正如
$row['Date\u Date']
本身是一个对象,而不是一个字符串,这就是为什么直接使用它时会得到“Unix启动时间”的原因。

只是好奇:您的
$row['Date\u Due']
Y-m-dh:i:s
格式,那么,为什么要将其解析为
DateTime
对象,然后再将其格式化为
Y-m-dh:i:s
格式呢?您不能直接输出
$row[“Date\u Due”]
而不是通过
DateTime
对象传递它吗?另外,
print\r($row)
如果您的$row['Date\u Due']已填充,那么-如您所见-我将尝试使用简单的引号从$row获取数据。这也可能是问题的根源。可能使用DateTime::createFromFormat(string$format,string$time[,DateTimeZone$timezone])。有了DateTimeZone,我想它会工作得更好。dateTime似乎有一些尾随的零。下面是
print\r($row)
数组([ID]=>39[Due\u Date]=>DateTime对象([Date]=>2016-07-03 13:12:00.000000[timezone\u type]=>3[timezone]=>Europe/Minsk)[Description]=>预计100001到期。我仍然不确定如何处理这个问题……嗨。
$row[“Due\u Date”]
在表中没有返回任何内容。我已经回复了上面的Abracadver,因为我现在可以看到问题所在。我尝试了以下操作,但没有任何乐趣。
$date=date\u create\u from\u format('Y-m-d H:I:s.u',$row[“Due\u date”]);
echo.$row[“ID”.”date('Y-m-d H:I:s',$date.“$row[“Description”.”;这将在表中创建以下日期时间,我想这是一个改进;)1970-01-01 03:00:00我也厌倦了以下内容,但返回的是1970-01-01(我知道是Unix开始时间)
$date=date('Y-m-d',strotime($row[“due_date”]));                                                 “回声”$行[“ID”]。"" . $日期。" " . $行[“说明”]。"";请查看编辑后的答案<代码>$row[“到期日”]
是一个对象,而不是字符串。