Nette databáze – date formát bez hodin

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

Přepisuji již fungující aplikaci do nette a DB přitom nechávám nezměněnou. Narazil jsem na problém s DATE v databázi. V předchozí aplikaci když jsem k tomuto typu přistupoval, tak se mi z databáze vracel čas ve formátu YYYY-MM-DD. Pokud k té samé databázi přistupuji z nette dostávám objekt (?) s obsahující timezone_type, timezone a date. Vykousat date z objektu není problém, ale zarazilo mě že date je vracen ve formátu YYYY-MM-DD HH:MM:SS. Je možné rozumným způsobem dostat z DB pouze YYYY-MM-DD, nebo je potřeba split?

JHadamcik
Člen | 47
+
0
-
$row->datetime->format('Y-m-d H:i:s');

?

Pokud ano pak prostě

$row->datetime->format('Y-m-d');

Editoval JHadamcik (12. 9. 2013 13:44)

Muhahe
Člen | 79
+
0
-

JHadamcik napsal(a):

$row->datetime->format('Y-m-d H:i:s');

?

Pokud ano pak prostě

$row->datetime->format('Y-m-d');

Díky za myšlenku, jen ještě takovej blbej dotaz, jde tohle aplikovat na celou sadu vysledku z DB? Respektive z databáze vybírám celou sadu dat a některé z nich jsou právě DATE. Je třeba ta změna formátu aplikovat na jednotlivé řádky (sloupce), nebo je možné to použít na celý výsledek? Jde o to že vybraná data dále předávám jako pole v šabloně javascriptu.

JHadamcik
Člen | 47
+
0
-

Nejde aplikovat format na $row. Musíš na jednotlivé sloupce. Každopádně to snad není takový problém :) Můžeš zkusit něco jako

foreach($row as $column) {
	if($this->isValidDateTime($column) {
		$column = $column->format('Y-m-d');
	}
}

Ale je to jen hloupý nápad.

llook
Člen | 407
+
+1
-

Ten datum je vrácen jako objekt Nette\DateTime. Při výpisu v šabloně se použije jeho metoda __toString(), která to formátuje v tom formátu, co se ti nelíbí. Když to chceš formátovat jinak, tak buďto tou metodou format(), nebo helperem date, např.:

{$row->datum|date:"d. n. Y"}

Editoval llook (12. 9. 2013 14:04)

Muhahe
Člen | 79
+
0
-

llook napsal(a):

Ten datum je vrácen jako objekt Nette\DateTime. Při výpisu v šabloně se použije jeho metoda __toString(), která to formátuje v tom formátu, co se ti nelíbí. Když to chceš formátovat jinak, tak buďto tou metodou format(), nebo helperem date, např.:

{$row->datum|date:"d. n. Y"}

Asi už budu vypadat jako ignorant, ale lze helper použít na javascriptovou proměnnou? Jak jsem psal výše, data předávám jako pole javascriptu, konkrétně datatables a ideálně bych změnu formátu prováděl až tam. Např

<script>
{"mDataProp": function(source, type, val){

                    return( { source.zacatek.date|date:'d. m. Y'})
              }},
</script>

Existuje funkční řešení tohoto kódu?

ViPEr*CZ*
Člen | 818
+
0
-

Toto source.zacatek.date mít jako object Date a z toho si to pak natahat. Na jsku to takhle nepůjde.

Muhahe
Člen | 79
+
0
-

ViPErCZ napsal(a):

Toto source.zacatek.date mít jako object Date a z toho si to pak natahat. Na jsku to takhle nepůjde.

Toho jsem si vědom, hlavně mě zajímalo, jestli to nejde nastavit nějak globálně, nebo přímo v presenteru/modelu nad celou sadou dat. Ale no nic split to pořeší.

Díky všem