2010-04-15 146 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

還等什麼?算術與負數一起工作。當它們開始時,只要使用一致,就沒有區別。

負數也是人!不要歧視!它傷害了他們的感受。