Bir kez her zaman başka bir daha az olmasını sağlamak için nasıl

3 Cevap

Ben bir veritabanına depolanan gereken iki kez var. Saat biçimi hh: mm: HAYIR TARİH ile ss. Bu süreler sistemde kullanıcılar tarafından değiştirilebilir. Tek bir zaman ve diğeri bir zaman kapalıdır. Zaman kapalı her bir 24 saatlik döngüsü içinde üzerinde zaman daha büyük olmalıdır.

Burada sorun yaşıyorum parçasıdır. Ben bu yüzden daha sonra kullanıcıların kez bir 24 saatlik süre içinde sadece eğer mantıklı belirlemek mümkün olmak istiyorum ve istediğiniz aynı "günlük" döngüsü içinde her şeyi tutmak için gece yarısından önce sürelerini seçerek kullanıcıyı sınırlamak istemiyorum zamanı her zaman daha az olduğunu test edin.

Birisi bana bu ile çalışmak yardımcı olabilir? Gerçekten ben bunu yapmam gerek hangi bir (ler) Bilmiyorum o kadar çok zaman ve tarih fonksiyonları vardır; artı, ben bu test nasıl belirsiz değilim.


Ben bir tarih dahil olmadan bu test için bir yol olduğunu düşünmeye başlıyorum. Sadece kez yeterli değildir.

3 Cevap

OP bir yorum yazdı:

The user can opt to get a report delivered in a window of time. The user may opt to have their reports delivered in a window from 23:00:00 to 01:00:00 hours. They may decide tomorrow that that time is no longer good and change it to 23:0:00 to 05:00:00 or something like that. Am I missing something??

Siz zaman tanım kısmında sorunum yok. Sen raporu gönderir kodu ile oynamak isteyebilirsiniz.

// current time
$timeNow = time();

// fetch user time options from database
$timeOn = [from the database];
$timeOff = [from the database];

// convert times to seconds from epoch
$timeOn = strtotime($timeOn);
$timeOff = strtotime($timeOff);

// if database time is in timestamp format,
// only the hour, minutes and second information is needed
$timeOn = mktime(date("H", $timeOn), date("i", $timeOn), date("s", $timeOn));
$timeOff = mktime(date("H", $timeOff), date("i", $timeOff), date("s", $timeOff));

// if time on is higher than time off, time on is of yesterday
if($timeOn > $timeOff){
    $timeOn = strtotime("-24 hour", $timeOn);
}

// decide on report sending
if($timeNow >= $timeOn && $timeNow <= $timeOff){
    // Send report
} else {
    // Do not send report or reschedule the report
}

The time is always within a 24 hour cycle, so if the user puts 01:00/03:00 he's on for 2 hours If he writes 03:00/01:00 he's on for 22 hours.

Ben sorun görmüyorum.

Hh Any iki kat: mm: Eğer devlet olarak ss formatında, bir 24 hour time period içinde olacak. Aslında bir tarihini saklamak Yani sürece, ben bunu nasıl emin değilim.

Eğer doğru anlamak, 23:00:00 bir başlangıç ​​zamanı ve 04:00:00 bir bitiş zamanı (bu sadece 5 saatlik vardiya anlamına gelir) sizin için kabul edilebilir olmalıdır? Bu kabul edilebilir ise, o zaman bana kabul edilemez giriş bir örnek verebilirim?

Belki bitiş saati başlama saatinden 12 saat içinde olup olmadığını kontrol etmek istiyorsun? Bu, uygun olması gerekmektedir.