Autor Zpráva
undisputed
Profil
mám vypísaný čas z DB napr 16:00 ale potreboval by som k tomu pripočítať napr 5000 sekúnd ale ten čas (16:00)mám uložený v premennej ako to k tomu pripočítať?

lebo takto



$cas4=("$cas",Time()+50000);




mi to nefunguje
l564
Profil
Přičítání a odečítání času
EDIT: Neřešíš to náhodou už zde?
Sweetko
Profil *
Hmm, náhodička že jsem si s tím zrovna chtěl hrát, tak jsi mě do toho dostal :)
<?php 
header('Content-Type: text/html; charset=utf-8'); 
setlocale( LC_ALL, "Czech"); 
$timeStamp = mktime( 17, 08, 20, 10, 30, 2004 ); 
echo date( "d.m.Y ( H:i:s ) T\n", $timeStamp ); 
?>


mktime má formát( hodina, minuta, sekunda, měsíc, den, rok )
d.m.Y je den.měsíc.rok ( H:i:s ) je ( hodina:minuta:sekunda )

Vše co napíšeš do mktime se ti samo přepočte do toho tvaru date(); který vypíšeš.

Jaký formát má tvůj čas v proměnné který taháš z db?

Tvůj příklad by mohl být nějak takto:
<?php 
header('Content-Type: text/html; charset=utf-8'); 
setlocale( LC_ALL, "Czech"); 
$timeStamp = mktime( $hour, $minute, $sec + 50000, $month, $day, $year ); 
echo date( "d.m.Y ( H:i:s ) T\n", $timeStamp ); 
?>

Když chceš jen vypsat čas tak za mont day a year můžeš dosadit 0 a date přepsat na date( "H:i:s", $timeStamp );
undisputed
Profil
nie neriešim, dal som to do novej témy aby to bolo prehladné ;)

k tomu článku nie je tam nič čo potrebujem klasické pripočítanie viem to je to čo aj tam
date(’Y-m-d H:i:s’, strtotime("+7 days")); // Přičte 7 dní


ale ja potrebujem pripočítať tak keď mám na miesto
’Y-m-d H:i:s’
ten čas uložený v premennej
undisputed
Profil
Sweetko:
No vyzerá to zaujímavo, ale nie je to moc zložité ?nedá sa to nejak lahším spôsobom?

lebo ja v tej premennej čas mám uložený len čas vo formáte H:i:s teda napr 18:25:00

a vždy k tomu aký vyberem z DB chcem pripočítať niečo
Sweetko
Profil *
Řešení tu mám, asi bude jednodušší ale podle mě je tohle 100%.
<?php
$date = "18:25:00";
echo $date . "<br />";
$dateE = explode( ":", $date );
$timeStamp = mktime( $dateE[ 0 ], $dateE[ 1 ] + 50000, $dateE[ 3 ], 0, 0, 0 );
$dateNew = date( "H:i:s", $timeStamp );
echo $dateNew;
?>
undisputed
Profil
aha okej ďakujem, dnes už nestíham, ale zajtra vyskúšam
Sweetko
Profil *
Hmm, tak za prve $dateE[ 2 ], mám tam 3 a nevim jestli je to važně 100%, snad ano když se měří čas o půl noci roku 2000.
Není za co :)
undisputed
Profil
A neviem ale keď som to len skopíroval ten posledný kód tak aj tak nejde
Tori
Profil
$cas = new DateTime('15:00');
A pak se podívejte na metody DateTime::modify a DateTime::format.
undisputed
Profil
Tori:
to mi nič nepomôže
blaaablaaa
Profil
undisputed:
Ale pomůže, v Toriho odkazech najdeš vše potřebné, pokud ti to ani tak nepůjde, ukaž část kódu, která ti nejde / se kterou si nevíš rady.
Sweetko
Profil *
Napadlo mě teď sepsat nový kód, asi méně zbytečně složitý než předchozí příklad.
<?php
// Čas z tabulky
$dateDb = "15:45:45";
// Rozlišit hodiny minuty a vteřiny
$dateDbE = explode( ":", $dateDb );
// Převést na sekundy
$time = ( $dateDbE[ 0 ] * 60 *60 ) + ( $dateDbE[ 1 ] * 60 ) + $dateDbE[ 2 ];

// Přičíst požadovaný počet sekund
$time += 50000;

// V požadovaným formátu 
$dateNew = date( "H:i:s",  $time );

echo $dateNew;
?>


Nezkoušel jsem tak napiš výsledek prosím jo.
Sweetko
Profil *
NE NE NE, to nemůže fungovat správně.
Tori
Profil
undisputed:
Klidně to můžete udělat i pomocí dvou strtotime - jedním si převedete řetězec na čas a druhým ten čas změníte (koukněte se na druhý parametr té funkce).

Sweetko:
<mimo-téma>
Jednou z výhod registrace na tomto fóru je možnost měnit své příspěvky ještě 24hod po odeslání.
</mimo-téma>
petr 6
Profil
$mojepromenna="2011-06-20 14:50:25";
$novapromenna=date("Y-m-d G:i:s",strtotime($mojepromenna." +5000 seconds "));

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