Unix时间戳和MySQL日期:出生日期

4
我有一个关于Unix时间戳和MySQL日期的基础问题。我正在尝试构建一个小网站,用户可以在其中注册并填写他们的出生日期。
问题是Unix从1970年1月1日开始计算。现在,如果我根据用户的出生日期计算年龄,例如使用date('m.d.Y', $unix_from_db)等方式,那么对于超过40岁的用户,它将失败,对吗?
那么应该如何正确地做这件事呢?很抱歉,像这样的基本问题,但我在PHP和MySQL方面缺乏经验。
//编辑: 谢谢大家。我感到困惑,因为date('m.d.y',mktime(0,0,0,1,1,1890))和date('m.d.y',-2000)返回01.01.70 - 下次我会更仔细地阅读手册。我已经修复了我的网站,再次感谢。很遗憾我只能接受一个答案,它们都同样好。
4个回答

5

1970年之前的Unix时间戳是负整数,表示距离1970年1月1日的秒数。

例如,1943年2月13日对应的时间戳为-848343600


4

那又怎样呢?算术可以处理负数。只要一直使用,它们的起始点并不重要。

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


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,您可以按照自己的喜好输出它:

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

strtotime函数会对1970年以前的日期返回负整数,而date函数可以很好地处理这种情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接