2010-04-15 147 views
3

我有一个关于unix时间戳和mysql日期的非常基本的问题。 我想建立一个小网站,用户可以注册并填写他们的出生日期。Unix时间戳和mysql日期:birthdate

问题是,unix从1970年1月1日开始。现在,如果我计算用户的年龄,如日期('m.d.Y',$ unix_from_db)等日期形式,它会失败,40岁的用户会失败,对吧?

那么这样做的方法是什么?对不起,对于这样的基本问题,但我对php和mysql没有经验。

//编辑: 谢谢大家。我很困惑,因为date('mdy',mktime(0,0,0,1,1,1890))和date('mdy', - 2000)返回01.01.70 - 下一次我将学习手册更仔细。我能够修复我的网站,再次感谢。太糟糕了,我只能接受一个答案,他们都同样好。

回答

3

在历元的数目仍 增加之前的日期,因此随着时间的推移,变得越来越不利。

http://en.wikipedia.org/wiki/Unix_time

你不应该有预划时代日期的任何问题:

<?php 
echo date("m-d-Y", mktime(0, 0, 0, 1, 1, 1970)); 
echo date("m-d-Y", mktime(0, 0, 0, 1, 1, 1969)); 
echo date("m-d-Y", mktime(0, 0, 0, 1, 1, 1943)); 
?> 

输出

01-01-1970 
01-01-1969 
01-01-1943 
2

将日期作为日期或日期时间存储在mysql中。

输出它不过你喜欢日期:

date('<format>', strtotime($date_from_db)); 

的strtotime会返回一些负整数,日期为1970年之前的日期将搞定就好了。

5

的Unix时间戳倍1970之前是负整数,计数的秒数,直到01月01日1970年

例如,2/13/1943-848343600

3

还等什么?算术与负数一起工作。当它们开始时,只要使用一致,就没有区别。

负数也是人!不要歧视!它伤害了他们的感受。