我一直在浏览这个问题的所有相关链接,但似乎没有什么对我有用......除非我将静态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!";
}
?>
提前致谢:)
答案 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)
的输出中,您应该使用
$row['Due_Date']->date
因为$row['Due_Date']
本身是一个对象,而不是一个字符串,这就是你直接使用它时获得“Unix开始时间”的原因。