Autor | Zpráva | ||
---|---|---|---|
Fastman Profil |
#1 · Zasláno: 30. 3. 2014, 14:49:59
Zdravím,
Mám tenhle kód <?=date ("M d Y H:i:s ", filemtime($leadon.$files[$i]));?> Potřebuji, aby tam byl nastavený správný timezone, protože na serveru (webhostingu) je čas posunutý. Na webu: Mar 30 2014 08:49:31 Přitom je: 14:49 Díky za odpověď. |
||
Chro Profil |
#2 · Zasláno: 30. 3. 2014, 14:58:31 · Upravil/a: Chro
http://php.net/manual/en/function.date-default-timezone-set.php
Nastavuje se před jakoukoli další prací s časovými funkcemi. http://www.php.net/manual/en/timezones.php Seznam nastavitelných časových zón. |
||
Fastman Profil |
#3 · Zasláno: 30. 3. 2014, 15:10:01
Děkuji za odpověď Chro. Bohužel mi to nefunguje.
<?=date("M d Y H:i:s ", date_default_timezone_set('Europe/Prague'), filemtime($leadon.$files[$i]));?> |
||
Chro Profil |
#4 · Zasláno: 30. 3. 2014, 15:33:03 · Upravil/a: Chro
<?php date-default-timezone-set('Europe/Prague'); //zde další práce s funkcemi jako date, time, filectime, strtotime atd. ?> Oprava: <?php date_default_timezone_set('Europe/Prague'); //zde další práce s funkcemi jako date, time, filectime, strtotime atd. ?> |
||
Fastman Profil |
Děkuji Vám mnohokrát za odpověď a poučení. V PHP se furt ještě učím a úplně poprvé jsem narazil na "rovná se (=)" za otazníkem <?=. Bohužel nevím, jak tenhle kód:
<?=date("M d Y H:i:s ", filemtime($leadon.$files[$i]));?> |
||
Chro Profil |
#6 · Zasláno: 30. 3. 2014, 17:11:25
<?= je zápis pro zobrazení hodnoty (kterou vyprodukuje nějaká funkce) v prohlížeči a lze ho nahradit za konstrukci echo s tím, že skript by měl začínat <?php a končit ?>. Co přesně chceš udělat? Z [#1] jsem vyvodil, že se ti na stránce čas poslední změny souboru zobrazí.
|
||
Fastman Profil |
#7 · Zasláno: 30. 3. 2014, 17:22:10
Přesně jak to popisujete. Mám na stránce výpis souborů a vždy se ukládá čas poslední změny (výpis změny se ukáže na stránce). Problém je, že hosting má úplně jiné časové pásmo než máme my. Proto potřebuji nějakým způsobem změnit čas na náš čas.
|
||
Chro Profil |
#8 · Zasláno: 30. 3. 2014, 17:41:40
Jasně, takže vidím v kódu $i, to znamená, že výpis je v nějakém cyklu, zřejmě for.
<?php date_default_timezone_set('Europe/Prague'); //zde začátek cyklu for echo date("M d Y H:i:s ", filemtime($leadon.$files[$i])); //konec cyklu for ?> |
||
Fastman Profil |
#9 · Zasláno: 30. 3. 2014, 18:49:17
Děkuji,
Uložil jsem to v 18:48 a na webu to vypsalo 18:23:54 Trochu nechápu, proč to minuty vypsalo špatně. |
||
Fisir Profil |
#10 · Zasláno: 30. 3. 2014, 18:50:43
Reaguji na Fastmana:
Jsi si jistý, že funkce filemtime() vrací správný časový údaj?
|
||
janbarasek Profil |
#11 · Zasláno: 30. 3. 2014, 19:30:25
Fastman:
Napadlo mě takové trochu shit-řešení: Čas ukládat jako Universal time (klasicky: Date("U"); ), čímž získáš jednoznačné časové umístění podle UTC zóny. Následně při každém výpisu bys k číslu jen přičetl nějakou konstantu podle toho, kde to chceš vykreslovat.
Bylo by to pravděpodobně výkonově rychlejší a navíc bys v tom udržel pořádek, protože bys nemusel řešit pokaždé konvert vůči tomu, kdy se co stalo a jak to zapsat v případě toho, že tvojí aplikaci bude používat celý svět. |
||
Fastman Profil |
#12 · Zasláno: 30. 3. 2014, 21:28:20
Děkuji, již všechno funguje.
|
||
Časová prodleva: 10 let
|
0