2011-04-09 156 views
1

我有一点点的代码,它似乎没有正常工作。PHP - 返回错误值的日期

我试图把它放到我的数据库正确的格式。我做的是以下情况:

date('Y-m-d H:i:s', strtotime('24/05/2011')); 

但每次我赞同它的时候,它返回:

1970-01-01 10:00:00 

回答

1

只是一个猜测,但试试这个:

date('Y-m-d H:i:s', strtotime('24/05/2011 00:00:00')); 

测试它显示了在这工作:

echo date('Y-m-d H:i:s', strtotime("24-5-2011")); 
+0

Ahhhhh .... - 而不是/ ..谢谢 – BigJobbies 2011-04-09 05:27:42

1

这意味着你的strtotime函数无法解析该日期。当它失败时,它返回false其中date读为0,这是UNIX纪元。作为程序员XR建议,您可能需要切换您的格式有点 - 如果他说的话不起作用,尝试转换datetime成这种格式:

date('Y-m-d H:i:s', strtotime('2011-05-24 00:00:00')); 
3

日期/ d/y或DMY格式 是通过查看各种 部件之间的 隔板消除歧义:如果分离器是 斜杠(/),则美国米/ d/y假设为 ;而如果分隔符是 短划线( - )或点(。),则假定欧洲d-m-y格式为 。

strtotime

的docmentation这应该工作

date('Y-m-d H:i:s', strtotime('05/24/2011')); 
+0

有趣的是,我从来没有花时间了解之前的工作方式。这是来自PHP.net的文档吗? – 2011-04-09 05:27:37

+0

如果您检查链接,您确实会发现它是官方文档。 – Charles 2011-04-09 05:31:53

0

首先,这不是日期(),但的strtotime()。 接下来,strtotime()不是一个魔杖,读你的头脑,并理解任何格式。
这只是一个函数,接受某些参数。 因此,如果它返回错误值 - 请检查输入参数并阅读手册以查看它们是否正确。

无论如何你不需要这么复杂的功能。所有你需要的是一些字符串操作:

list($d,$m,$y) = explode("/",$date); 
$date = "$y-$m-$d"; 

理解的字符串操作是使用PHP最重要的事情。