结果在UNIX时间戳中插入mysql数据库

时间:2012-07-30 05:29:29

标签: php mysql date unix-timestamp

我有一个奇怪的问题。我试图将一些值插入到具有相应日期的数据库中。在HTML表单中,日期格式为mm / dd / yyyy格式。我使用以下PHP (from stackoverflow answer)将此格式转换为mysql yyyy-mm-dd格式:

echo $date1 = str_replace("/","-",$_POST['date']);
echo $date = date('Y-m-d', strtotime($date1));

但是上面的回声,当我运行代码时它显示如下: 07-30-2012 1970-01-01

6 个答案:

答案 0 :(得分:3)

通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。有关详细信息,请参阅http://php.net/manual/en/function.strtotime.php

所以即使你传递'07 -30-2012'作为输入,它也会考虑07作为日期,30作为月份,因此你得到的结果不正确。

以下应该工作

echo $date = date('Y-m-d', strtotime($_POST['date']));

答案 1 :(得分:1)

echo $date = preg_replace('/^(\d\d)\/(\d\d)\/(\d{4})$/', '$3-$1-$2', $_POST['date']);

我认为此代码应该可以正常工作,但当然在将其插入数据库之前必须进行所有必要的检查。

答案 2 :(得分:1)

echo $date1 = str_replace("/","-","$_POST['date']");
echo $date = date('Y-m-d', strtotime($date1));

在日期中加上双引号然后你得到完美的结果

答案 3 :(得分:0)

我刚试过:

$date = "30/07/2012";
echo $date1 = str_replace("/","-",$date);
echo '<br />';
echo $date = date('Y-m-d', strtotime($date1));

它实际上正在回归:

30-07-2012
2012-07-30

您应该检查$ _POST ['date']格式。

答案 4 :(得分:0)

echo $date = date('Y-m-d', strtotime($_POST['date']));

您的第一行不正确,返回false,其中(转换为整数)为0,0是linux机器上的开始时间! (因此1970-01-01)

答案 5 :(得分:0)

您的输入采用mm/dd/yyyy格式,这意味着您应该使用斜杠/如果使用dd-mm-yyyy格式,则需要更改为破折号,如答案所示链接到。因此,在您的情况下,您不应该替换/