2010-07-21 36 views
10

Tôi có lịch tuần chứa sự kiện và muốn người dùng đó không thể thêm sự kiện trong những ngày qua. Vì vậy, tôi đang tìm cách sử dụng một chức năng như vậy:Kiểm tra xem một ngày cụ thể đã qua

if(strtotime($this->day) < time()){ // date format is YYYY-MM-DD 
// date is past 
}else{ 
// date is not past 
} 

Có vẻ như nó hoạt động tốt, ngoại trừ ngày hôm nay là ngày hôm qua. Tôi đang làm gì sai?

Trả lời

10

Dấu thời gian không bao giờ chỉ chứa ngày tháng, nhưng luôn luôn xuống đến giây hiện tại. strtotime($this->day) sẽ trả về ngày hôm nay theo số 0:00, trong khi bạn đang so sánh ngày hôm nay, ví dụ: 11:12.

Bạn có thể sử dụng strtotime("$this->day 12:59:59pm"); (nếu định dạng $this->day cho phép điều đó) hoặc sử dụng dấu thời gian ngày mai ngày mai.

+1

Cách khác, sử dụng 'strtotime ($ this-> ngày) user11977

+0

Cảm ơn người đàn ông! Cách này hoạt động tốt! – Luciano

11

đơn giản ->

if(strtotime($this->day) < strtotime(date('Y-m-d'))) 
{ 
    ... 
} 
else 
{ 
    ... 
} 
+0

Cảm ơn bạn! Tôi đã không xem xét để thiết lập ngày hôm nay trong thời gian() chức năng! – Luciano

+0

chức năng strtotime ... chỉ cần thực hiện một lỗi đánh máy .. xin lỗi –

+0

nếu bạn muốn cũng tài khoản trong vài giây, thêm vào H: i: s 'strtotime (ngày ('Y-m-d H: i: s'))' – justinl

0
if(strtotime($this->day) < mktime(0, 0, 0)){ 
    // date is past 
} else { 
    // date is not past 
} 
Các vấn đề liên quan