Autor Zpráva
nethor
Profil
Zdravím, neměla by fce date("Y-m-d H:i:s", 0 ); vracet 1970-01-01 00:00:00 ?

Nevím proč mi vrací 1970-01-01 01:00:00 . Souvisí to s GMT?
Joker
Profil
nethor:
Souvisí to s operačním systémem UNIX.
http://en.wikipedia.org/wiki/Unix_time

Ehm, blbě jsem si to přečetl, nebo spíš nepřečetl. (původní odpověď se týká toho, proč unix timestamp začíná 1. 1. 1970)
Ano, tohle souvisí s časovým pásmem.
nethor
Profil
Nějak jsem se zapíchnul na triviálním problému: načíst do pole časy od 0h do 24h po půl hodině.
$arr[] = "00:00:00";
$arr[] = "00:30:00";
$arr[] = "01:00:00";
...
$arr[] = "24:00:00";
Samozřejmě ne ručně, chtěl jsem k tomu použít date("H:i:s", $i*1800 ); .
Určitě je na to nějaká časová fce, jen ji nemůžu najít.

Jak se to dá provést lépe?
candiess
Profil
nethor:
Mužeš to zkusit cyklem. O takové časové f-ci nevím, budeš si ji asi muset napsat.
nethor
Profil
candiess:
Cyklem samozřejmě, jde o to, jak elegantně formátovat časový údaj.
Tori
Profil
Třeba takhle by to šlo:
$a = array();
for ($dt = new DateTime('00:00:00'), $i=0; $i < 48; $dt->modify('+ 30 min'), $i++) {
    $a[] = $dt->format('H:i:s');
}
unset($dt);
var_dump($a);
Nebo jednodušší možnost, pracující v cyklu jen se strtotime a date. Nicméně hodnotu "24:00:00" pomocí časových funkcí IMHO nezískáte, jedině si udělat prostě cyklus od 0 do 24 a čas.údaje skládat jako řetězec.
Joker
Profil
Jestli výsledkem má být jen to pole uvedené v [#3], možná by bylo snazší se vykašlat na práci s časem a udělat to normálně jako čísla a řetězce:

$arr = array();
for ($i=0; $i<24; $i++) {
  $padded = str_pad($i, 2, "0", STR_PAD_LEFT);
  $arr[] = $padded.".00:00";
  $arr[] = $padded.".30:00";
}
peta
Profil
$padded = substr("0".$i, -2);
Ale nejsem si ted jisty, co to udela s $i = 0, takze si to radeji zkus.
nethor
Profil
Joker:
Děkuji, fci pro doplnění znaku str_pad() jsem taky nemohl najít .
Tohle řešení bude asi bezpečnější než si hrát s časem.

Vyřešeno, už to funguje.
Kajman
Profil
nethor:

V dny, kdy se mění čas z či na letní, budou pole v [#6] a [#7] jiná. (A čas 24:00 formátováním datetime bude 0:00.)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: