使用日期功能时,日期不会正确回显

时间:2015-01-30 22:01:00

标签: php

也许我有脑屁但是这个:

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

$ dob显示为1970-01-01

即使$ _POST ['dob']的值是10/5/66。

我在这里错过了什么吗?

更新:我发现如果POST是10/5/1966那么它就可以了。所以我想如果出生日期早于1970年1月1日,你需要4位数! 但是,如果dob比1970年1月1日更新,那么2位数将被假定为19xx

2 个答案:

答案 0 :(得分:2)

这可能是PHP的strtotime()函数,它只支持Notes部分中记录的受限日期范围

  

时间戳的有效范围通常来自1901年12月13日星期五   20:45:54 UTC to Tue,20 Jan Jan 03:14:07 UTC。 (这些是日期   对应于32位带符号的最小值和最大值   整数。)

     

在PHP 5.1.0之前,并非所有平台都支持负时间戳,   因此,您的日期范围可能不会早于Unix   时代。这意味着,例如1970年1月1日之前的日期将无效   在Windows上,一些Linux发行版,以及其他一些操作系统   系统

您的代码段中的strtotime(" 10/5/66")会转换为2066年,并且您处于堆叠状态,并且它的工作意味着显示为unix时代的日期。

如果您使用的是64位PHP,那么使用这种方式不会有问题。或者,您可以使用DateTime类。

答案 1 :(得分:1)

使用DateTime,它应该适合您:

$_POST['dob'] = "10/5/66";

$date = new DateTime($_POST['dob']);
echo $date->format("Y-m-d");

输出:

2066-10-05

或更好的格式:

$_POST['dob'] = "10/5/1966";

$date = DateTime::createFromFormat("m/d/Y", $_POST['dob']);
echo $date->format("Y-m-d");