使用日期函数时,日期将无法正确回显


Date will not echo out correctly when using the date function

也许我脑子放屁了,但是这个:

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

$dob显示为 1970-01-01

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

我在这里错过了什么吗?

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

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

时间戳的有效范围通常从 1901 年 12 月 13 日星期五20:45:54 UTC 至 2038 年 1 月 19 日星期二 03:14:07 UTC。(这些是日期对应于 32 位有符号的最小值和最大值整数。

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

代码段中的strtotime("10/5/66")转换为 2066 年,并且您位于一个堆栈上,它不起作用,这意味着日期显示为 Unix 纪元。

如果您使用的是 64 位 PHP,则使用这种方式不会有问题。 或者,您可以使用日期时间类。

使用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");