Php strottime不工作

Php strottime不工作,php,Php,我是PHP新手,正在尝试将一个日期从登记表(格式为01/01/2011)转换为Y-m-d,以便将其存储在数据库中 这是我的代码,非常确定它以前工作过,但是现在它已经停止工作了。有什么想法吗 $dateformat = $_POST['dob']; $correctformat = date('Y-m-d',strtortime($dateformat)); 我已经检查了$\u POST['dob']正在打印的内容,它是正确的,但是$correctformat每次都在打印1970-01-01 任

我是PHP新手,正在尝试将一个日期从登记表(格式为01/01/2011)转换为Y-m-d,以便将其存储在数据库中

这是我的代码,非常确定它以前工作过,但是现在它已经停止工作了。有什么想法吗

$dateformat = $_POST['dob'];
$correctformat = date('Y-m-d',strtortime($dateformat));
我已经检查了
$\u POST['dob']
正在打印的内容,它是正确的,但是
$correctformat
每次都在打印
1970-01-01

任何帮助都将不胜感激

谢谢

您可以使用(注意PHP5>=5.3.0)代替
strotime
,因为
strotime
接受
m/d/Y
而不是
d/m/Y

尝试:


.1。看一下日期,你能告诉我是先有月还是先有天吗?如果您不能-无论什么程序如何确定实际订单?

.2。如果计划成为PHP用户,此操作需要非常基本的字符串操作:

$chunks = explode("/",$_POST['date']);
$date   = "$chunks[2]-$chunks[1]-$chunks[0]";

数据块的顺序取决于日期部分的实际顺序

正如Adam所说,没有strottime()应该是strottime()

你真的用文字字符串“01/01/2011”测试过它吗?我们中的一些人出生在1970年之前,这可能会引起一些混乱(strotime()生成32位Unix时间)

(请注意,Strotime使用美国风格的mm/dd/yy[yy]而不是欧洲公约的dd/mm/yy[yy]来解释xx/xx/xx[xx])

在删除排印错误后,它对我有效:

[colinm@dev-sensor ~]$ php -q t.php
2011-01-01
[colinm@dev-sensor ~]$ cat t.php
<?php

print date('Y-m-d',strtotime('01/01/2011')) . "\n";
[colinm@dev-sensor~]$php-qt.php
2011-01-01
[colinm@dev-传感器~]$cat t.php

我假设在你的脚本中它是
strotime
,而不是
strotime
?它对我有效:
01/01/2011
是不明确的,你的日期是
m/d/Y
还是
d/m/Y
格式?后者不是一个。很抱歉,它的格式是m/d/Y,例如30/05/2011@nickb尝试一个日期,比如1985年7月27日,不确定是否有效?我已经测试过了(正如@nickb在他的评论中所做的那样),它可以很好地使用他给出的格式@Adam明白了-也许OPs的问题是
$\u POST
或者它的格式是d/m/Y当我这样做时,我得到了一个可捕获的致命错误:类DateTime的对象无法转换为字符串。此外,我将需要一个正确的格式日期作为变量,以便我可以使用它插入到数据库中。最小日期通常是Fri,1901年12月13日(最小值为32位带符号整数)。但是,一些操作系统不支持这个(Windows),所以在这种情况下,min将是epoch。对不起,我在写这篇文章时犯了愚蠢的拼写错误。它确实说了strottime。我在1985年7月27日对它进行了测试,结果不起作用。我知道2011年1月1日是可行的,因为月份和日期可能会混淆!!实际的格式并不重要。你可以设置任何适合你需要的东西。这就是编程的目的。
[colinm@dev-sensor ~]$ php -q t.php
2011-01-01
[colinm@dev-sensor ~]$ cat t.php
<?php

print date('Y-m-d',strtotime('01/01/2011')) . "\n";
$currentformat = explode("/",$_POST['date']);
$newformat = $currentformat[2]."-".$currentformat[1]."-".$currentformat[0];