Autor Zpráva
PetraPP
Profil
Mám tady datum s časem v UTC a potřebovala bych ho převést do TIME() verze.

Už jsem zkoušela strtotime, ale vypíše to 01.01.1970 01:00:
$casovani = strtotime("2014052100 UTC");
echo Date("d.m.Y H:i", $casovani);

Vypsat by to mělo: 21.05.2014 02:00 (dd.mm.yyyy hh:mm).

Neporadí někdo? :(
Tori
Profil
Chybí vám tam minuty, zadání 201405210000 UTC bude převedeno správně.
Alphard
Profil
Jestli více převádíte mezi pásmy, řekl bych, že time formát je cesta do pekla. Doporučuji použití DateTime objektu, jeho metoda setTimezone() pak převádí mezi pásmy.

$date = new DateTime("2014-05-21 10:14:15");

// případně explicitně
$date = new DateTime("2014-05-21 10:14:15", new DateTimeZone('Europe/Prague'));
var_dump($date); // '2014-05-21 10:14:15'

$date->setTimezone(new DateTimeZone('Pacific/Nauru'));
var_dump($date); // '2014-05-21 20:14:15'

Jinak viz [#2] Tori, ale práce s timestamp přináší spíš problémy.
PetraPP
Profil
Tori: moc děkuji :)

Ještě mám jeden poslední dotaz, ať nezakládám další téma. Jde o ukládání dat do souboru a jeho zpětné použití. Aktuálně používám generování do TXT a následné použití přes include, což mě nepříjde asi to nejlepší řešení. Co byste použili Vy?

$file = "data.txt";

$fp = fopen($file, "w");
fwrite($fp, "<?\n".$zapis."?>"); // $zapis obsahuje: $datum = "123456";
fclose($fp);

Následně otevírám pro zpracování:
include ("data.txt");
echo $datum;
Alphard
Profil
PetraPP:
Co byste použili Vy?
Určitě bych negeneroval přímo PHP kód (to se hodí maximálně pro cache). Vhodnější je ukládat data v čisté strukturované podobě. U souborů se nabízí funkce file_put_contents() a file_get_contents(). Protože uvedené souborové funkce mají jisté problémy s paralelním přístupem k souboru, je třeba je buď ošetřit pomocí např. doc.nette.org/cs/2.1/atomicity nebo přejít na databázi (vypadá to složitě, ale těmito problémy trpí i vaše současné řešení, riziko problémů se zvyšuje s rostoucí návštěvností webu).

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