2009-12-03 51 views
15

Làm cách nào để kiểm tra xem ngày có định dạng "2008-02-16 12:59:57" chưa đầy 24 giờ trước không?So sánh ngày PHP

Trả lời

26
if (strtotime("2008-02-16 12:59:57") >= time() - 24 * 60 * 60) 
{ /*LESS*/ } 
2

ví dụ: qua strtotime và thời gian().
Sự khác biệt phải ít hơn 86400 (giây mỗi ngày).

<?php 
echo 'now: ', date('Y-m-d H:i:s'), "\n"; 
foreach(array('2008-02-16 12:59:57', '2009-12-02 13:00:00', '2009-12-02 20:00:00') as $input) { 
    $diff = time()-strtotime($input); 
    echo $input, ' ', $diff, " ", $diff < 86400 ? '+':'-', "\n"; 
} 

in

now: 2009-12-03 18:02:29 
2008-02-16 12:59:57 56696552 - 
2009-12-02 13:00:00 104549 - 
2009-12-02 20:00:00 79349 + 

chỉ kiểm tra cuối ngày/giờ đẻ ít hơn 24 giờ trong quá khứ.

+2

Đó là ok (tôi giả sử) trong trường hợp anh ta cần "ít hơn 24 GIỜ". Chỉ cần nhớ rằng không nên cho rằng một ngày nào đó luôn có 24h (như bạn đã nói trong câu trả lời của bạn). Nếu bạn di chuyển từ chênh lệch giờ sang chênh lệch ngày, bạn nên sử dụng thư viện DateTime. Để có giải thích tốt hơn về các vấn đề về Thời gian, bạn có thể kiểm tra bài viết này: http://www.odi.ch/prog/design/datetime.php –

4
if ((time() - strtotime("2008-02-16 12:59:57")) < 24*60*60) { 
    // less than 24 hours ago 
} 
2

Php có comparison function between two date/time objects, nhưng tôi thực sự không thích nó lắm. Nó có thể không chính xác.

Điều tôi làm là sử dụng strtotime() để tạo dấu thời gian unix ngoài đối tượng ngày, sau đó so sánh nó với đầu ra của thời gian().

+0

'DateTime' là PHP 5.3 trở lên. –

20

Chỉ cần thêm câu trả lời khác, sử dụng strtotime 's ngày tương đối:

$date = '2008-02-16 12:59:57'; 
if (strtotime("$date +1 day") <= time()) { 
    // Do something 
} 

Tôi nghĩ rằng điều này làm cho mã nhiều hơn nữa có thể đọc được.

0

Chỉ cần sử dụng nó .....

if(strtotime($date_start) >= strtotime($currentDate)) 
{ 
// Your code 
} 
0

Nên có bạn ngày biến Giống như

$date_value = "2013-09-12"; 
$Current_date = date("Y-m-d"); OR $current_date_time_stamp = time(); 

Bạn có thể so sánh cả hai ngày kể từ ngày chuyển đổi vào thời gian tem vậy:

if(strtotime($current_date) >= strtotime($date_value)) { 
echo "current date is bigger then my date value"; 
} 

HOẶC

if($current_date_time_stamp >= strtotime($date_value)) { 
echo "current date is bigger then my date value"; 
} 
0

Có lẽ nó sẽ dễ dàng hơn để hiểu ...

$my_date  = '2008-02-16 12:59:57'; 
$one_day_after = date('Y-m-d H:i:s', strtotime('2008-02-16 12:59:57 +1 days')); 

if($my_date < $one_day_after) { 
echo $my_date . " is less than 24 hours ago!"; 
} else { 
echo $my_date . " is more than 24 hours ago!"; 
} 
0

Bạn có thể sử dụng đơn giản PHP để làm điều này:

$date = new simpleDate(); 
echo $date->now()->subtractHour(24)->compare('2008-02-16 12:59:57')->isBefore(); 

Vui lòng kiểm tra hướng dẫn. Click here.