2013-06-26 50 views
9

cho loại đối tượng ngày date("m/d/Y", strtotime($numerical." ".$day." of ".date("F")))ngày php ít hơn một ngày khác

nơi mà nó có thể cung cấp cho một ngày dd/mm/yyyy đó là "Thứ Hai đầu tiên của tháng Tám", ví dụ

thế nào có thể Tôi quyết định ngày này lớn hơn, nhỏ hơn hoặc bằng ngày hôm nay?

Tôi cần một phương pháp now() mà làm việc ở định dạng này và có thể so sánh giữa các đối tượng ngày ngày

Tôi chưa thử() < ngày(), được nêu ra. Nhưng tôi không nghĩ rằng sẽ làm việc

bất kỳ cái nhìn sâu sắc đánh giá cao

+1

Bạn không nghĩ rằng nó sẽ hoạt động? Tại sao không thử nó? –

+0

@DanyCaissy anh ta muốn so sánh ngày tháng() của đầu ra, không phải là dấu thời gian số nguyên ... – bwoebi

Trả lời

17

Hãy so sánh các timestamps:

if (strtotime($numerical." ".$day." of ".date("F")) < time()) { 
    // older 
} else { 
    // newer 
} 

Điều này có thể là strtotime() trả về giây kể từ 1970/01/01 và time() quá. Và trong PHP, bạn có thể dễ dàng so sánh các số nguyên ...

20

Tôi đã hiểu nhầm câu hỏi của bạn lúc đầu. Bạn không sử dụng ngày đối tượng trong so sánh như bạn nói, nhưng thay vào đó là biểu diễn chuỗi của một ngày (được tạo bởi date).

Thật dễ dàng để so sánh gần như bất kỳ chuỗi đại diện của một ngày để hiện hành thời gian:

$now = time(); 
$date = '2015/03/12'; #could be (almost) any string date 

if (strtotime($date) > $now) { 
    #$date occurs in the future 
} else { 
    #$date occurs now or in the past 
} 

So sánh một chuỗi ngày để hiện hành ngày chỉ phức tạp hơn một chút là. Dưới đây là một cách để làm điều đó:

$today_start = strtotime('today'); 
$today_end = strtotime('tomorrow'); 
$date = '2015/03/12'; #could be (almost) any string date 

$date_timestamp = strtotime($date); 

if ($date_timestamp >= $today_end) { 
    #$date occurs after today 
} elseif ($date_timestamp < $today_start) { 
    #$date occurs before today 
} else { 
    #$date occurs today 
} 

Thay vì sử dụng time để có được thời gian hiện tại xuống thứ hai, bạn tính toán timestamps cho hai midnights rằng Bookend ngày hôm nay. Sau đó, bạn so sánh với những người.

Có nhiều cách thông minh hơn để thực hiện việc này (chẳng hạn như so sánh các đại diện YYYY/MM/DD của ngày và hôm nay), nhưng ví dụ này xây dựng độc đáo trên trang đầu tiên.

+0

thx :) câu trả lời linh hoạt và rõ ràng hơn –

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