timestamp – Helper pro převod na datum

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

Má Nette něco takového?

Jde o to, že mám čas v vteřinách.

$item->time = 60;

Tento kod mi daných 60 vteřin přičte k aktuálnímu času. → nehodí se

{$item->time|date:"H:i:s"}

Tento kod to převede správně, ale vere v potaz časové pásmo a tak mám čas +1 → nehodí se

{=date("H:i:s", $item->time)}

Mám jedině tenhle bastl, ale…

function myTime($time)
{
	$hour = floor($time / 60 / 60);
	$min = $time / 60 % 60;
	$sec = $time % 60;

	if($hour == 0 && $min == 0) {

		return $sec;

	}elseif($hour == 0 && $min != 0) {

		return $min . ":" . $sec;

	}elseif(($hour != 0 || $hour != 0) && $min == 0) {

		return $hour . ":" . $min . ":" . $sec;

	}
}

$time = myTime(60);

Znáte nějaké správné řešení?

Potřeboval bych, aby to vypsalo čas ve správném formátu a pokud, jako v tomto případě, bude hodina = nula, tak jí to nevypíše.

Felix
Nette Core | 1245
+
0
-

Tohle by ti nepomohlo? Addon

Aurielle
Člen | 1281
+
0
-

On chce zformátovat čas v sekundách na hodiny, minuty a sekundy. Nejde mu o datum ani timestamp…

sumiisakua
Člen | 36
+
0
-

Jak píše gmvasek. Mám např. číslo 7594 a potřebuji ho převést na časový formát.

Melmen
Člen | 132
+
0
-

Myslíš něco na tenhle způsob?

sumiisakua
Člen | 36
+
0
-

Melmen: Ano, viz můj poslední příklad („bastl“).

Editoval sumiisakua (13. 2. 2012 22:38)

Melmen
Člen | 132
+
0
-

Osobně bych neřešil jestli je to bastl nebo ne, hlavně že to splňuje to, co má :) Udělal bych si z toho helper, a bylo by :)

h4kuna
Backer | 740
+
0
-

Ahoj toto by nestačilo? Druhým parametrem je nastavení timezone tak jen si s ním pohrát.

$x = new \DateTime(date('Y-m-d H:i:s', 60), new DateTimeZone(\DateTimeZone::UTC));
$x->format('H:i:s');

http://www.php.net/…onstruct.php

Editoval h4kuna (14. 2. 2012 9:19)

sumiisakua
Člen | 36
+
0
-

h4kuna: Tak to bohužel taky nefunguje.

DateTime(3) {
   date => "1970-01-01 01:01:00" (19)
   timezone_type => 3
   timezone => "Europe/London" (13)
}

Musel jsem tam napsat „natvrdo“ Europe/London, jelikož DateTimeZone::UTC to nebralo → DateTimeZone::__construct(): Unknown or bad timezone (1024)

Editoval sumiisakua (14. 2. 2012 10:30)

h4kuna
Backer | 740
+
0
-

Já to psal z hlavy jen jako nápad, pak mě napadá zda není nějaký příznak že je letní čas a na tvrdo odečitat hodinu? Každopádně bych se držel třídy DateTime pokud se ti nelíbí co máš.

Editoval h4kuna (14. 2. 2012 10:36)

David Ďurika
Člen | 328
+
0
-

skus nieco ako:

<?php
$interval = new DateInterval('PT'.$timespan.'S');
echo $interval->format('%m month, %d days');
?>

viac info: http://php.net/…interval.php

Editoval achtan (14. 2. 2012 10:56)

duke
Člen | 650
+
0
-
{=gmdate('H:i:s', $item->time)}
sumiisakua
Člen | 36
+
0
-

duke: Díky to je ono :)

boob
Člen | 21
+
0
-

ale v pripade, ze ten cas bude dlhsi ako 24 hodin, tak to zobrazovat spravne nebude :)