2011-08-20 49 views

Trả lời

100

Hãy thử sử dụng một cái gì đó như thế này:

if(strtotime('2011-08-19 17:14:40') < strtotime('-30 days')) { 
    // this is true 
} 

Bên cạnh đó, chuỗi này có vẻ như nó được lưu trữ trong SQL như lĩnh vực datetime/timestamp. Bạn có thể trực tiếp chọn tất cả các mục từ cơ sở dữ liệu của bạn với các ngày tuổi sử dụng:

SELECT ... WHERE `datetime` + INTERVAL 30 DAY < NOW() 
+1

hữu ích, +1 cho nó :) –

3
strtotime('2011-08-19 17:14:40') + 30 * 24 * 60 * 60 < time(); 
+0

Nó phải là 'strtotime ('2011-08-19 17:14:40') + 30 * 24 * 60 * 60 nobody

+3

@nobody Bạn có> 2000 đại diện. Bạn có thể tự sửa nó, như tôi đã làm. :) – AgentConundrum

+3

@ gion_13 Thường là một ý tưởng tồi khi thực hiện các phép tính '24 * 60 * 60' đó, vì chúng có thể trở nên không chính xác khi xử lý những thứ như thời gian tiết kiệm ánh sáng ban ngày. Tốt hơn nên sử dụng một cái gì đó như RiaD gợi ý, và để 'strtotime()' xử lý các phép tính thời gian tương đối. – AgentConundrum

7

Bạn có thể sử dụng Carbon như sau

if (30 - ((new \Carbon\Carbon($given_date, 'UTC'))->diffInDays()) < 0) { 
    echo "The date is older than 30 days"; 
} 
7

Nếu bạn đang ở trên PHP 5.3 hoặc cao hơn, bạn có thể làm:

$someDate = new \DateTime('2011-08-19 17:14:40'); 
$now = new \DateTime(); 

if($someDate->diff($now)->days > 30) { 
    echo 'The date was more than 30 days ago.'; 
} 
+0

bạn có thể liên kết đến tài liệu cho các khác biệt ($ now) -> ngày không? tôi muốn tinh chỉnh nó hàng giờ liền. cảm ơn. – Jay42

+0

[diff] (http://php.net/manual/en/datetime.diff.php) trả về [DateInterval] (http://php.net/manual/en/class.dateinterval.php). DateInterval có một thuộc tính 'h' cho 'hours' nhưng nó thực sự là một mảnh của sự khác biệt (vì nó liên quan đến y (năm), m (tháng), d (ngày), v.v.). Để có được giờ, tôi sẽ làm '($ now-> getTimestamp() - $ someDate-> getTimestamp())/3600'. Điều này sẽ trả về một số thập phân. Sau đó bạn có thể tùy ý sử dụng [round()] (http://php.net/manual/en/function.round.php), [intval()] (http://php.net/manual/en/function. intval.php), vv nếu bạn muốn nó như một số nguyên. –

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