2013-04-09 37 views
37

Tôi có ba chuỗi sau (giờ hiện tại, mặt trời lặn và mặt trời mọc), làm cách nào để tìm xem thời gian hiện tại có nằm giữa bình minh và hoàng hôn không?Cách kiểm tra xem thời gian giữa hai lần trong PHP

$current_time = "10:59 pm"; 
$sunrise = "5:42 am"; 
$sunset = "6:26 pm"; 

Chỉnh sửa: Tôi không hiểu tại sao tôi nhận được rất nhiều phiếu bầu. Tôi cho rằng trang web này có nghĩa là đặt câu hỏi nếu bạn không thể tự mình làm điều gì đó.

Tôi không thể tìm ra cách chuyển đổi thời gian thành các số vì am/pm đó là lý do tại sao tôi đặt câu hỏi. Tôi không thấy bất kỳ câu hỏi tương tự vì vậy tôi hỏi.

+0

Hãy xem Lớp DateTime nếu thông tin trên không giúp bạn, OP. – phpisuber01

+8

Tôi không nghĩ rằng nó công bằng để downvote câu hỏi này. Câu trả lời khác được liên kết nghiêm túc đề cập đến ngày tháng. Tôi nghĩ mọi người chỉ 'đi với dòng chảy' ngay sau khi bất kỳ câu hỏi nào đạt -1. – Evert

+1

@WebnetMobile tôi nghĩ rằng các ngày so sánh là một chút khác biệt sau đó so sánh ngày giờ. – Ace

Trả lời

56
$current_time = "4:59 pm"; 
$sunrise = "5:42 am"; 
$sunset = "6:26 pm"; 
$date1 = DateTime::createFromFormat('H:i a', $current_time); 
$date2 = DateTime::createFromFormat('H:i a', $sunrise); 
$date3 = DateTime::createFromFormat('H:i a', $sunset); 
if ($date1 > $date2 && $date1 < $date3) 
{ 
    echo 'here'; 
} 

See it in action

Reference

+0

thông báo rằng anh ta không xử lý các giá trị Ngày, bạn có chắc chắn rằng điều này chỉ hoạt động vào ban ngày không ?, tôi nghĩ rằng hàm DateTime đang xử lý dấu thời gian unix trong hàm lõi. nếu date3 là = ngày 15 - 6 giờ chiều, điều này sẽ là false = ngày 17 - 4 pm Ace

+0

hãy xác nhận tôi nếu tôi sai, tôi đã không thử chức năng – Ace

+0

Kiểm tra thiết lập fiddle. Nó cho thấy nó hoạt động. –

2

tôi sẽ recoment bạn đầu tiên "chuyển đổi" các dây để số nguyên sử dụng chức năng substr và intval.

avter bước này bạn sẽ có thể chỉ cần so sánh thời gian.

(lưu ý rằng bạn nên sử dụng 18:00 thay vì 6:00 giờ chiều, điều này sẽ dễ dàng hơn, nếu bạn có thể "phát hiện" với đế nếu giờ là AM hoặc PM và chỉ cần thêm "12" vào số điện thoại)

Tôi khá shure có những cách thanh lịch hơn để làm điều này, nhưng điều này chỉ nên cung cấp cho bạn một ý tưởng BASIC cho một cách SIMPLE cho các nhà phát triển php không tiên tiến.

hy vọng điều này sẽ giúp

+2

strtotime() sẽ tốt hơn so với substr() – CrabLab

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