alıştırma süresine sahip olup olmadığımı kontrol edin Kullanıcı gönderimlerini kabul eden bir sistemim var ve bir gönderim aldıktan sonra sistem uygun zaman dilimini bulmak için tüm zaman aralıklarından geçecektir. Sorun, bitiş zamanı bir sonraki güne geçerse, başlangıç & bitiş zamanlarına karşı kontrol edebilmesinin gerekmesidir.Geçerli saat iki kez arasında olup olmadığını kontrol edin,
Aşağıdaki örnekte atın: Bir zaman dilimi geçerli gün saat 10.30'da başlar ve ertesi gün saat 16: 00'da sona erer. Geçerli saat 10:30 PM ile 11:59:59 PM arasındaysa, gönderim o zaman dilimine atanacaktır. Ancak, şimdiki saat 12:00 ile 16:00 arasında ise o zaman zaman dilimini atlar. Geçerli saat 23:00:00 ise,
function check_time($from, $to, $time) {
$time = strtotime($time);
$from = strtotime($from);
$to_ = strtotime($to);
$to = $to_ <= $from ? strtotime($to . " tomorrow") : $to_;
return ($time >= $from && $time <= $to);
}
$timeslots = array(
array("16:00:00", "22:30:00"),
array("22:30:00", "16:00:00")
);
foreach ($timeslots as $slot) {
if (check_time($slot[0], $slot[1], date("H:i:s")))
{
echo "true\n";
}
else
{
echo "false\n";
}
}
sonra sonuç
false
true
olurdu Ama şimdiki zaman 12 ise:
Bu
Bugüne kadar ne var: 00:00 sonra sonuç iki kez arasında teknik olarak olsa bilefalse
false
olurdu.
Yeni bir gün olması durumunda, $from
için strtotime
sonucunun günün ilerleyen saatlerinde olacağını bilmesi gerektiğini biliyorum. Yani dün 10:30 için kontrol etmek yerine, bu gece saat 10:30 için kontrol ediyor.
Sorunum, $to
saatini bir sonraki güne zorladığım gibi, gerekiyorsa önceki güne $from
zaman geçişini yapmanın bir yolunu bulmuyorum.
tarihleri önemliyse, o zaman neden senin zamanlarda ekleyin? –
Zamanlar dinamiktir. Zaman dilimleri bir veritabanında saklanır ve bir yöneticinin takdirine bağlı olarak değiştirilebilir. Gönderimleri bölüştürmek için kullanırız, böylece gönderimleri inceleyen kişiler eşit iş yüküne sahiptir. Özgünlük için –