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

时间:2011-06-24 12:24:41

标签: php mysql timestamp

这应该是一个简单的,但我找不到答案。

我有一个输入字段,用户输入他的birthay日期(DD.MM.YYYY)和strtotime()我将它插入MySQL的整数字段,因为它比datetime更快(我有很多记录)

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您必须使用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