2010-07-24 92 views
7

Tôi đã tìm kiếm điều này nhưng không tìm thấy chức năng hoàn hảo trong php. Tôi muốn có một hàm php để tính tuổi người chỉ trong vài tháng.PHP: Cách tính tuổi người trong tháng

Ví dụ:

less then one month old. 
5 months old. 
340 months old. 

Cảm ơn

+0

Câu trả lời hay sẽ vào ngày 2010-03-01 trả lời '1' nếu người đó được sinh ra từ 2010-01-31 và '0' nếu người đó được sinh ra vào 2010-02-02. –

Trả lời

13

Sử dụng PHP DateInterval (có sẵn từ 5.3.0), đó là khá dễ dàng:

$birthday = new DateTime('1990-10-13'); 
$diff = $birthday->diff(new DateTime()); 
$months = $diff->format('%m') + 12 * $diff->format('%y'); 

Bây giờ $months sẽ chứa số tháng tôi đã sống.

+0

Có lý do cụ thể nào để sử dụng định dạng $ diff->() khi truy cập trực tiếp thuộc tính y và m của DateInterval không? – kander

+0

Không. Bạn có thể làm điều đó nếu bạn muốn. –

+0

Tôi không thấy bất kỳ đề cập nào về các thuộc tính đó trong tài liệu. Sử dụng các tính năng không có giấy tờ thường là một ý tưởng tồi vì chúng có nhiều khả năng thay đổi trong tương lai. – Ruben

-1

Nếu bạn muốn năm tháng, nơi người đó đầu vào lứa tuổi của họ như $years

$month = $years*12; 

Nếu bạn muốn tháng đến nhiều năm, nơi người nhập tuổi của họ là $months

$year = $months/12 
+0

Điều này là không hoàn toàn chính xác, xem xét thực tế là các tháng không được phân phối đồng đều (28, 29, 30, 31 ngày mỗi tháng). – kander

+0

Ngoài ra, nếu một người được sinh ra vào tháng Giêng và bây giờ là tháng Bảy, việc tính toán sẽ sai 7 tháng. –

+0

không nếu bạn giả định $ năm có thể được nhập dưới dạng số thập phân .. ví dụ: 1,5 năm vv – ina

1
$birthday = new DateTime("June 21st 1986"); 
$diff = $birthday->diff(new DateTime()); 
$months = ($diff->y * 12) + $diff->m; 

var_dump($months); 

Có điều gì đó trong những dòng này?

Các vấn đề liên quan