PHP práce s daty – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

PHP práce s daty – PHP – Fórum – Programujte.comPHP práce s daty – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Sonyc0
Duch
29. 9. 2016   #1
-
0
-

Krásný den všem, mám tu problém, který umím řešit ale přijde mi, že zbytečně komplikovaně.

Mám v databázi data ve formátu RRRR-MM-DD, pro každý den jeden řádek. Potřeboval bych algorytmus, který by dokázal souvislá data spojit do rozsahu. Tedy aby z následujícího:

2016-09-20

2016-09-21

2016-09-22

2016-10-02

2016-10-03

Udělal tyto záznamy v DB:

2016-09-20 | 2016-09-22

2016-10-02 | 2016-10-03

Aktuálně pracuji na algoritmu, který prochází data a navazující si skládá do pole a z něj nakonec vytvoří rozsah, ale věřím, že existuje elegantnější řešení. Poradíte, prosím? Děkuji.

Nahlásit jako SPAM
IP: 90.178.194.–
Sonyc - http://czlan.cz
Reklama
Reklama
peter
~ Anonymní uživatel
2551 příspěvků
29. 9. 2016   #2
-
+1
-
Zajímavé

*algoritmus

1) Prevedes na casove razitka. Odectes. A bud je rozdil presne 1 den nebo ne.

2) K datumu vyrobis datum +1 den a porovnas s nasledujicim zaznamem. Takze to stejne musis prevest na casove razitko, pridat den a prevest zpet :)

U prevodu na casove razitko je vsak omezeni, tusim min rokem 1.1.1950 (casove razitko = 0). Coz muze byt dost problem u datumu narozeni. Nevim, zda to ma php uz osetrene.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:5def:3d...–
Ovrscout
~ Anonymní uživatel
72 příspěvků
29. 9. 2016   #3
-
0
-

viz to co napsal  #2 peter jen bych si dal pozor na přechody letního a "zimního" času, Tj nejlépe se tomu vyhnout a při převádění datumů poučít čistou "GMT" zónu.

Nahlásit jako SPAM
IP: 193.165.79.–
Sonyc0
Duch
29. 9. 2016   #4
-
0
-

Děkuji za tipy, nevyhnu se tedy tomuto řešení:

foreach ($data as $key => $value) {
    //echo  $value .'test<br>';
    echo 'LOG: <strong>'.$value.'</strong></br>';
    
    if(!isset($rozsah_prvni)){
      $rozsah_prvni = $value;
      $predchozi_den =  $value;
      $rozsah_posledni = $value;
      $nasledujiciden = date('Y-m-d', strtotime($value . ' +1 day'));
      echo 'LOG: Smazat zaznam s ID = '.$key.'</br>';
      echo 'LOG: Nenalezen prvni rozsah.</br>';
    }else{
      if($value == $nasledujiciden){
      echo 'LOG: '.$value.' == '.$nasledujiciden.'.</br>';
      $rozsah_posledni = $value;
      $nasledujiciden = date('Y-m-d', strtotime($value . ' +1 day'));
      echo 'LOG: Smazat zaznam s ID = '.$key.'</br>';
      }else{
      echo 'LOG: '.$value.' != '.$nasledujiciden.'.</br>';
      $rozsahy[] = $rozsah_prvni.' / '.$rozsah_posledni;
      $rozsah_prvni = $value;
      $nasledujiciden = date('Y-m-d', strtotime($value . ' +1 day'));
      $rozsah_posledni = $value;
      echo 'LOG: Konec rozsahu, ulozeno '.$value.' / '.$nasledujiciden.'</br>';
      echo 'LOG: Smazat zaznam s ID = '.$key.'</br>';
      }
    }    
}
$rozsahy[] = $rozsah_prvni.' / '.$rozsah_posledni;
echo 'LOG: Konec rozsahu, ulozeno '.$value.' / '.$nasledujiciden.'</br>';
echo 'LOG: Posledni rozsah!</br>';

těch "LOG"ů si nevšímejte, aktuálně to ladím :). Říkám si, že je to neelegantní řešení tak jsem právě myslel, že nevím o nějaké hezké funkci nebo něčem podobném. Každopádně moc děkuji a omlouvám se za "algorytmus"... dal bych si facku :)

Nahlásit jako SPAM
IP: 90.178.194.–
Sonyc - http://czlan.cz
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 46 hostů

Podobná vlákna

Práce s cizími daty — založil Jiří

Práce s obrázky v php — založil michal.vacha

Prace s zip v php — založil bbtrash

Práce s webkamerou (PHP+Flash) — založil survik1

PHP programátor - nabídka práce — založil Leemon Interactive

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý