2012-05-03 40 views
9

Possible Duplicate:
How to calculate the difference between two dates using PHP?
Date Difference in php?Sự khác biệt PHP trong tháng giữa hai ngày?

Tôi có hai ngày trong một biến như

$fdate = "2011-09-01" 

$ldate = "2012-06-06" 

Bây giờ tôi cần sự khác biệt trong những tháng giữa chúng.
Ví dụ: câu trả lời sẽ là 10 nếu bạn tính toán từ tháng 09 (tháng 9) đến 06 (tháng 6) của năm tiếp theo - bạn sẽ nhận được 10 kết quả.
Tôi có thể làm điều này bằng PHP như thế nào?

+1

câu hỏi tương tự [link] (http://stackoverflow.com/questions/2681548/find-month-difference-in-php) – cyberbemon

+1

Duplicates: http://stackoverflow.com/search?q=date + Sự khác biệt + php – hakre

+1

Hy vọng điều này sẽ giúp http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php – nithi

Trả lời

12

Có một cái nhìn tại date_diff:

<?php 
$datetime1 = date_create('2009-10-11'); 
$datetime2 = date_create('2009-10-13'); 
$interval = date_diff($datetime1, $datetime2); 
echo $interval->format('%m months'); 
?> 
+0

tôi gặp lỗi khi chạy ... Fatal error: Gọi hàm undefined date_diff() trong C: \ test \ test.php trên dòng 4 – Jaiff

+0

@Jaiff Bạn đang chạy phiên bản PHP nào? 5.3 là cần thiết cho chức năng này. – Devator

+0

Điều này không có tác dụng, ví dụ bạn đã cung cấp nó sẽ trả lại 0 –

17

Một giải pháp thanh lịch hơn là sử dụng DateTimeDateInterval.

<?php 

// @link http://www.php.net/manual/en/class.datetime.php 
$d1 = new DateTime('2011-09-01'); 
$d2 = new DateTime('2012-06-06'); 

// @link http://www.php.net/manual/en/class.dateinterval.php 
$interval = $d2->diff($d1); 

$interval->format('%m months'); 
+22

Điều này không hoạt động nếu khoảng thời gian là hơn 12 tháng. Một sự khác biệt của 13 tháng sẽ hiển thị như 1. Là một người dùng được đề cập trong một bình luận trên câu trả lời khác, bạn có thể sử dụng '$ interval-> m + 12 * $ interval-> y' để sửa lỗi này. – Matthew

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