2013-03-28 134 views
-1

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

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 />"; 
+0

使用了一些新的日期时间函数/分离器是美国格式,并且20/06 20月的第6天是无效的日期... 。use - separator for UK dates - http://www.php.net/manual/en/datetime.formats.date.php –

回答

8

the manual

日期在M/d/y或DMY格式通过查看 的各种组件之间的分隔符消除歧义:如果分离器是 斜杠(/) ,那么假设美国的m/d/y;而如果 分隔符是破折号( - )或点(。),则假定欧洲的d-m-y格式为 。

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

+3

+1阅读手册。 – Kermit

1

解决这个问题,我在5.3 PHP

$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 />"; 
+0

你str_replace节省了大量的时间,谢谢你 –