-1

下面是数据库的输出,我试图从数据库中获取开始日期和日期之间的月数。下面是我的输出

string(10) "12/12/2010" Date : 12/12/2010 - 1292112000
string(10) "19/04/2000" Date : 19/04/2000 -
string(10) "08/08/2007" Date : 08/08/2007 - 1186527600
string(10) "20/06/2011" Date : 20/06/2011 - 

如您所见,第二个和第四个 unix 时间戳是空的。我不知道是什么导致了这个问题。下面是我用来回显您在上面看到的内容的代码。

echo "Date : " . $row['startDate'] . " - " . strtotime($row['startDate']) . var_dump($row['startDate']). "<br />";
4

2 回答 2

9

手册

m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。

为避免潜在的歧义,最好尽可能使用 ISO 8601 (YYYY-MM-DD) 日期或 DateTime::createFromFormat()。

于 2013-03-28T17:01:50.537 回答
1

解决了这个问题,我在 5.3 PHP 中使用了一些新的 DateTime 函数

$originalDate = str_replace("/", "-", $row['startDate']);
$date1 = new DateTime($originalDate);
$date2 = new DateTime('now');

$interval = date_diff($date1, $date2);

echo "Months" . $interval->format('%m') . ($interval->format('%y') * 12) . "<br />";
于 2013-03-28T17:19:11.067 回答