2011-06-24 99 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