如何在PHP中保存早于时间戳的日期


How to save dates older than timestamp in PHP

这应该很容易,但我就是找不到答案。

我有一个输入字段,用户在其中输入他的出生日期(DD.MM.YYYY),并使用strtotime()将其插入MySQL中的整数字段,因为它比日期时间更快(而且我有很多记录)。

但显然会有年龄超过1.1.1970的用户,因此时间戳将为零。在网页上,我想展示用户的年龄。因此,如果他出生在1960年,他就51岁了。我知道我可以将MySQL字段更改为DATETIME,但PHP仍然是计算用户年龄的方法,它使用UNIX时间戳。

那么,我应该如何组织它呢?谢谢

在PHP中处理日期和时间时,应该使用DateTime对象。它在解析日期格式时非常灵活,可以计算两个日期之间的差异,并且没有1970或2038的问题。

您应该使用MySQL DATETIME,在sql查询中计算。保存到数据库时,使用php-date()函数转换为mysql-DATETIME

您必须使用DateTime对象,您可以在这里看到一个示例代码:

<?php
$date = new DateTime("1960-05-06");
$timestamp = $date->getTimestamp();
echo $timestamp; //-304707600
echo "'n";
$date = new DateTime();
$date->setTimestamp($timestamp);
$birthday = $date->format("Y-m-d");
echo $birthday; //1960-05-06
echo "'n";
echo date("Y") - $date->format("Y"); //55 years old for now (2015)
?>

输出:

-304732800
1960-05-06
55

在线测试:https://ideone.com/sKjBWS