andrisp Posted May 17, 2006 Report Share Posted May 17, 2006 (edited) Ir viens dīvaina paskata kods, kam būtu jāizdrukā laiki pa nedēļām. Tipa pirmajā rindiņa ir šīs nedēļas sākuma laiks un beigu laiks. Nākamās ir rindiņas ir par vienu nedēļu atpakaļ utt. un tā tik uz atpakaļu. Jautājums - kāpēc pa starpu vairākām nedēļām tiek nepareizi izrēķināts sākuma laiks nedēļai ? Izpildiet skriptu, tad būs skaidrs par ko runāju. Varbūt to visu var kaut kā daudz labāk uzrakstīt ? $s = strtotime('next sunday'); for ($i=0;$i<=100;$i++) { $lt = date('d-m-Y H:i:s', $s + 86399); $gt = date('d-m-Y H:i:s', $s - 604800 + 86400); echo $gt.' - '.$lt.'<br />'; $s -= 604800; } UPD: Tas man būs vajadzīgs, lai atlasītu no mysql datubāzes ierakstus pa nedēļām. Varbūt es vispār nepareizi tam visam pieeju ? Var būt var kaut kā pavisam savādāk ? Tabula ir tāda: datums (DATETIME) | summa (DOUBLE) | skaits (INT) Vajadzība ir atlasīt visus ierakstus sākot no aktuālās nedēļas šādā formātā Laika posms (Šī nedēļa) - Kopskaits - Kopsumma Laika posms (Pagājušnedēļa) - Kopskaits - Kopsumma Laika posms (Aizpagājuš.) - Kopskaits - Kopsumma utt Edited May 17, 2006 by andrisp Link to comment Share on other sites More sharing options...
Delfins Posted May 17, 2006 Report Share Posted May 17, 2006 Izskatās, ka dažās dienās ir 25h... ;) Link to comment Share on other sites More sharing options...
andrisp Posted May 17, 2006 Author Report Share Posted May 17, 2006 (edited) Es iedomājos, ka tur varētu būt saistība ar dienas gaismas taupīšanas režīmu (laika pagriešana +-1h ), tik īsti nevaru izdomāt, ko lai dara šajā sakarā. Edited May 17, 2006 by andrisp Link to comment Share on other sites More sharing options...
Delfins Posted May 17, 2006 Report Share Posted May 17, 2006 (edited) tas nav tas... kļūda notiek pie mēnešu pārejas, izskatās ka kaut kāds bugs... $r = 7*24*60*60; $a = 1143925199; $b = 1143320400; print date( 'd-m-Y H:i:s', $b); print date( 'd-m-Y H:i:s', $b+$r); = 25-03-2006 23:00:00 = 02-04-2006 00:00:00 Tā kā mēs skaitam klāt tikai veselas dienas, laikam bija jāpaliek tādam pašam UPD3: Ha ha ha.... $s = strtotime('next sunday'); for ($i=0;$i<=100;$i++) { $lts = $s-1; $gts = strtotime('-1 week',$s); $lt = date('d-m-Y H:i:s', $lts); $gt = date('d-m-Y H:i:s', $gts); echo $gt.'('.$gts.') - '.$lt.'('.$lts.') ['.$r.' / '.($lts-$gts).']<br />'; $s = strtotime('-1 week',$s); } 09-04-2006 00:00:00(1144530000) - 15-04-2006 23:59:59(1145134799) [604800 / 604799] 02-04-2006 00:00:00(1143925200) - 08-04-2006 23:59:59(1144529999) [604800 / 604799] 26-03-2006 00:00:00(1143324000) - 01-04-2006 23:59:59(1143925199) [604800 / 601199] 19-03-2006 00:00:00(1142719200) - 25-03-2006 23:59:59(1143323999) [604800 / 604799] 12-03-2006 00:00:00(1142114400) - 18-03-2006 23:59:59(1142719199) [604800 / 604799] Edited May 17, 2006 by Delfins Link to comment Share on other sites More sharing options...
andrisp Posted May 17, 2006 Author Report Share Posted May 17, 2006 (edited) 25-03-2006 23:00:0002-04-2006 00:00:00 Šogad laiks tika pagriezts vienu stundu uz priekšu 26. martā, tā kā domāju, ka tomēr tur tā vaina. Tikai jāizdomā kā atrisināt. Varbūt kautkā var norādīt date fjai, lai ignorē tos daylight saving times ? UPD: Īsti nesapratu, ko tu tajā kodā dari. Kas ir $r ? Edited May 17, 2006 by andrisp Link to comment Share on other sites More sharing options...
Delfins Posted May 17, 2006 Report Share Posted May 17, 2006 (edited) $r nav vajadzīgs... izmanto `-1 week` lai Daylight saving būtu iekļauts $s = strtotime('next sunday'); for ($i=0;$i<=100;$i++) { $gts = strtotime('-1 week',$s); $lt = date('d-m-Y H:i:s', $s-1); $gt = date('d-m-Y H:i:s', $gts); echo $gt.' - '.$lt.'<br />'; $s = $gts; } Edited May 17, 2006 by Delfins Link to comment Share on other sites More sharing options...
andrisp Posted May 17, 2006 Author Report Share Posted May 17, 2006 Paldies, šis strādā labi. Vēl viens jautājums: Kā labāk salīdzināt datumus ? Šādi ? echo ('2005-05-23 23:06:01' >= '2005-05-23 23:02:01'); vai tomēr konvertēt abus datumus uz unix_timestamp un tad salīdzināt ? Link to comment Share on other sites More sharing options...
Delfins Posted May 17, 2006 Report Share Posted May 17, 2006 konkrētajā gadījumā, var pat ar stringiem ;) Link to comment Share on other sites More sharing options...
Recommended Posts