Unix时间戳和mysql日期:生日

时间:2010-04-15 00:01:15

标签: php mysql unix date

我有一个关于unix时间戳和mysql日期的基本问题。 我正在尝试建立一个小型网站,用户可以注册并填写他们的生日。

问题是unix从1970年1月1日开始。现在,如果我计算用户的年龄,表单日期如日期('mdY',$ unix_from_db)等等,它将失败,用户年龄超过40年,对吗? / p>

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

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

4 个答案:

答案 0 :(得分:5)

1970年以前的Unix时间戳是负整数,计算直到1970年1月1日的秒数。

例如,2/13/1943-848343600

答案 1 :(得分:4)

那又怎样?算术与负数一起使用。当它们开始时,只要它被一致地使用就没有区别。

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

答案 2 :(得分: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

答案 3 :(得分:2)

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

输出你喜欢的日期:

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

strtotime将在1970年之前的日期返回一些负整数。日期将处理这一点。