2011-06-24 57 views
1

这应该很简单,但我找不到答案。如何在PHP中保存比时间戳更早的日期

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

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

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

回答

2

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

+0

谢谢!这看起来有希望 – Ivan

0

你应该使用MySQL DATETIME,在sql查询中计算。使用PHP的date()函数来转换到MySQL DATETIME当您保存到数据库

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