Autor Zpráva
Fastman
Profil
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
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
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
<?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]));?>
upravit, respektive, jak mám nahradit to "=", aby vše fungovalo. Děkuji za odpověď.
Chro
Profil
<?= 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
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
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
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
Reaguji na Fastmana:
Jsi si jistý, že funkce filemtime() vrací správný časový údaj?
janbarasek
Profil
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
Děkuji, již všechno funguje.

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:

0