Vypnout převod datetime na objekt Nette\Datetime

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
j.salak
Člen | 42
+
0
-

Můžu nějak vypnout převod získaných dat z databáze na Nette\Datetime, tzn. aby mi zůstala vrácený sloupeček ve formátu „Y-m-d H:i:s“. Potřebuji to kvůli následnému ukládání dat do JSON, kde mi to potom dělá problém protože při ukládání to neproběhne magic metodou __toString a uloží se mi to do JSON ve formátu:

{„date“:„2014–07–31 00:00:00.000000“,timezone_type

Díky za informaci

MartinitCZ
Člen | 580
+
0
-

Tak si ten sloupec uprav.

$line->dateTimeColumn->format('Y-m-d H:i:s');
h4kuna
Backer | 740
+
0
-

Pokud máš objekt Nette\Datetime tak ten má metodu __toString a pokud se sama nespustí tak máš možnost ji vyvolat ručně přetypováním na string.

<?php
$datetime = new Nette\Datetime();
echo (string) $datetime;
?>

Vidím že máš v ukázce i mikrosekundy takže pak to musíš udělat jak píše @MartinitCZ

Editoval h4kuna (1. 9. 2014 20:47)

j.salak
Člen | 42
+
0
-

Díky za informaci, ale tohle všechno mě samozřejmě napadlo, ale je to nepraktické z důvodu, že já nevím jak se jmenuje soupec s datumem. Pro přiblížení situace. Mám tu notifikační plugin, který vytváří notifikace z různých tabulek a když notifikace není do zadanéh deadline splněna, tak se posíla buzer email, jehož šablony mám v latte a doplňuji do nich data, ale ta jsou pro každou notifikaci jiná, z jiných tabulek, tzn. jiné sloupce apod. A z důvodu této variability si hodnoty pro email ukládám do jednoho sloupce v JSONu a pak si je po deadline vyvolám a napním jima šablonu emailu. Tzn. ruční přepis datumu pro mě nepřicházi v úvahu.

Druhá možnost by byla, kdybych mohl prohnat dekodovany json opet tou samou metodou ktera probiha pri vraceni dat z databaze a ono by mi to zas vse predelalo podle typu, ale tu nevim jak zavolat.

h4kuna
Backer | 740
+
0
-

Dobře a filter v emailu (po staru helper) by ti nepomohl? Který by zjistil že dostává datový typ Datetime a pak to převede na string?

Případně pokud je to takový opruz. tak v db nepoužij datetime ale varchar a nebo to při výběru prožeň přes CONCAT(datetime_column), ale ani jedno nedoporučuji.

j.salak
Člen | 42
+
0
-

To by pomohlo, jak jsem psal, potřeboval bych vědět jakou metodu mám zavolat, která vezme získaná data a když něco z toho je ve formátu datetime tak to převede na ten nette\datetime

h4kuna
Backer | 740
+
0
-

Filter je callback takže si do toho můžeš dát libovolnou logiku.