PDA

Pogčedajte punu verziju : Vremenski interval


skaarj
18. 03. 2007., 02:18
Evo problema:

Korisnik zadaje interval (recimo 22:45 - 0:15) u kome zeli da se izvrsi neka operacija.

Cron pokrece php skript svakih 5 minuta i proverava da li je startovan u gorenavedenom intervalu ako jeste izvrsava sve sto treba za dati interval. Intervala moze biti mnogo i mogu se presecati, svaka stavka u bazi ima svoj interval.

Pitanje je kako da PHPom, saznam da li sam u zadatom intervalu?

Mrlja
18. 03. 2007., 04:10
$tnow = time();
$t1 = mktime( $hour1, $min1, 0, date('m'), date('d'), date('Y') );
$t2 = mktime( $hour2, $min2, 0, date('m'), date('d'), date('Y') );
if ( $tnow >= $t1 OR $now <= $t2 ) {
}

otprilike tako...

dee
18. 03. 2007., 07:00
|| ili && ?

Mrlja
18. 03. 2007., 07:03
... pa ne moze i brzo i tacno...
sorry :o
Dakle: AND

dee
18. 03. 2007., 07:42
s tim da, ako drzi stvari u bazi, lakse ce mu bit pisat query

SELECT * FROM stavke WHERE start < '$tnow' AND end > '$tnow'

Mrlja
18. 03. 2007., 07:45
Ajmo mi na pivo, nedelja je... :)

skaarj
18. 03. 2007., 12:43
Resio sam problem ranije na slican nacin samo koristeci strtotime.

Usput mali komentar, ako nekom ovo jos zatreba. Prilozeni kod ne uzima u obzir intervale koji prelazi dva dana, recimo 22:45 - 00:25.

To se resava dodavanjem jos jednog dana na drugi datum ukoliko su sati pocetka intervala veci od sati kraja intervala.

U svakom slucaju havala na trudu u nedeljno jutro! :)

dee
18. 03. 2007., 13:01
nije li Unix timpestamp trenutka kraja uvijek veci od timestampa trenutka pocetka?

ili je danas stvarno freakin' nedjelja? :D

skaarj
18. 03. 2007., 13:20
U aplikaciji se ne cuvaju datumi samo intrevali (mozda u pocetnom pitanju to nije dovoljno jasno navedeno).
Tako da ako neko hoce da mu sistem nesto radi od 23:45- 00:15 svaki dan ne bi mu bas radilo kako treba.
Na nacin na koji je izvedeno gore uzeo bi u obzir vreme od 18.03.2007 23:45 do 18.03.2007 00:15... Tako da bi UNIX stamp kraja bio manji od UNIX stampa pocetka :)
Ispravano vreme bi bilo 18.03.2007 23:45 do 19.03.2007 00:15

Mrlja
18. 03. 2007., 13:25
ako je u pitanje definisanje intervala, pravilno bi bilo dati ga u dva intervala (00:00 - 00: 15 i 23:45 - 23:59)
.. a jeste nedelja i kotlic se krcka...