Câu trả lời:
Vì PHP> = 5.2.2 nên bạn có thể sử dụng DateTime
lớp như vậy:
if (new DateTime() > new DateTime("2010-05-15 16:00:00")) {
# current time is greater than 2010-05-15 16:00:00
# in other words, 2010-05-15 16:00:00 has passed
}
Chuỗi được chuyển đến hàm tạo DateTime được phân tích cú pháp theo các quy tắc này .
Lưu ý rằng nó cũng có thể sử dụng time
và các strtotime
chức năng. Xem câu trả lời gốc .
new DateTime('2010-05-15')
chỉ là một ví dụ, có thể là bất kỳ đối tượng DateTime nào mà bạn đã khởi tạo trước đó.
$object
là một đối tượng DateTime, tôi đã sử dụng if (new DateTime() > $object) {}
và nó hoạt động sai. Nhưng if (time() > $bject->getTimeStamp()) {}
hoạt động chính xác. @Salman Một
Ngoài ra còn có lớp DateTime triển khai một hàm cho các toán tử so sánh.
// $now = new DateTime();
$dtA = new DateTime('05/14/2010 3:00PM');
$dtB = new DateTime('05/14/2010 4:00PM');
if ( $dtA > $dtB ) {
echo 'dtA > dtB';
}
else {
echo 'dtA <= dtB';
}
Kiểm tra strtotime
chức năng của PHP để chuyển đổi ngày / giờ đã đặt của bạn thành dấu thời gian: http://php.net/manual/en/ Chức năng.strtotime.php
Nếu strtotime
không thể xử lý đúng định dạng ngày / giờ của bạn ("4:00 chiều" có thể hoạt động nhưng không hoạt động "lúc 4 giờ chiều"), bạn sẽ cần sử dụng các hàm chuỗi, ví dụ: substr
để phân tích cú pháp / sửa định dạng và truy xuất dấu thời gian của bạn qua chức năng khác, ví dụ mktime
.
Sau đó, so sánh dấu thời gian kết quả với ngày / giờ hiện tại ( if ($calulated_timestamp > time()) { /* date in the future */ }
) để xem liệu ngày / giờ đã đặt là trong quá khứ hay tương lai.
Tôi khuyên bạn nên đọc PHP-doc trên date / time-functions và quay lại đây với một số mã nguồn của bạn khi bạn gặp khó khăn.
date_default_timezone_set('Asia/Kolkata');
$curDateTime = date("Y-m-d H:i:s");
$myDate = date("Y-m-d H:i:s", strtotime("2018-06-26 16:15:33"));
if($myDate < $curDateTime){
echo "active";exit;
}else{
echo "inactive";exit;
}
$myDate
sẽ bằng string (0) ""
.