[php] jak dokleić godzinę

0

cześć

Mam kod, który dodaje do aktualnej daty 10 dni

<?php

$czas=date("u"); 
echo("Data w formacie UNIXa: ".$czas."
");
echo("normalna data: ".date("y-m-d")."
");
$czas+=60*60*24*10;
echo("Data za 10 dni: ".date("y-m-d",$czas)." 
echo $czas+;
");
?>

Próbuje do tego dokleić godzinę 16:00:00 wyliczyłem, że w unixie jest to 166060 ale jak dodałem to do linijki

$czas+=60*60*24*10 + 16*60*60

to tylko dodaje mi do aktualnego czasu 16 godzin czyli np 2010-03-26 11:22:22

a ja bym chciał aby zapisało mi datę w postaci 2010-03-26 16:00:00

proszę o pomoc

0

wynika to z tego, ze funkcja date zwraca string,
najrozsadniejszym rozwiązaniem byłoby chyba:

<?php

$secs=time();
echo("Data w formacie UNIXa: ".date("u",$secs)."
");
echo("normalna data: ".date("y-m-d",$secs)."
");
$secs+=60*60*24*10;
echo("Data za 10 dni: ".date("y-m-d",$secs)."
echo $secs;
");
?>

Jeśli natomiast chcesz koniecznie zwiększać datę podana w string'u, to musisz napisać coś, co zamieni ci string na timestamp. Zwiększenie stringa samego w sobie o pewna liczbę całkowitą nie jest na pewno tym, czego szukasz,
to, co przedstawiłeś, to tak jakbyś chciał

$str="jestem wiec "; 
$str+=60; 
echo $str;
0
$data = strtotime("+10 days 16:00:00");

echo "Data za 10 dni o godzinie 16:00 - " . date("Y-m-d H:i:s", $data);

o to chodzi?

0

no właśnie za bardzo się rozpędziłem z tamtym kodem a wystarczyło użyć strtotime()

i tak też można

<?php

$obecna_data = date("Y-m-d"); 
 $pozostalo = strtotime($obecna_data) + 86400 * 10 + 16*60*60;

echo $pozostalo;

?>

dziękuje za pomoc :)

0
maksm napisał(a)
$obecna_data = date("Y-m-d"); 
$pozostalo = strtotime($obecna_data) + 86400 * 10 + 16*60*60;

nawet nie skomentuję tego kodu [glowa] ale ważne że działa, prawda? ;)

0
maksm napisał(a)
$obecna_data = date("Y-m-d"); 
$pozostalo = strtotime($obecna_data) + 86400 * 10 + 16*60*60;

O time() słyszeliście? -_-

0

heh nie wiem czemu nie skomentujesz tego kodu ? :P chodzi o te cyferki wiem, że można zapisać jako jedną chodziło mi o pokazanie co z czego wynika

tak przynajmniej ja słyszałem o time

0

To czemu zapisujesz datę w stringu, a potem konwertujesz ją na UNIX timestamp zamiast po prostu użyć:

$pozostalo = time() + 10*24*60*60;
0

szczerze ? to nie skojarzyłem tego

dziękuje Demonical Monk za naprowadzenie i uproszczenie

0
Demonical Monk napisał(a)

To czemu zapisujesz datę w stringu, a potem konwertujesz ją na UNIX timestamp zamiast po prostu użyć:

$pozostalo = time() + 10*24*60*60;

bo chodzi o to żeby dopisać do tego godzinę szesnastą
i on próbował do tego dodać jeszcze 166060 :|
trzeba najpierw usunąć liczbę sekund do północy tego dnia a potem dopiero dodać 166060
a usunięcie sekund nie jest wcale takie proste - trzeba odjąć resztę z modulo 86 400 (liczba sekund w dniu) ale w wyniku tej operacji nie otrzymujemy jeszcze północy naszego czasu - trzeba jeszcze sprawdzić czy obecnie obowiązuje czas letni czy zimowy i ewentualnie jeszcze odjąć odpowiednią liczbę sekund oraz zdaje się jeszcze odpowiednią liczbę sekund dla naszej strefy czasowej

moim zdaniem łatwiej użyć

$pozostalo = strtotime("+10 days 16:00");

gdzie wystarczy rzut oka i już się wie co zawiera zmienna $pozostalo

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0