Witam, stworzyłem prostą stronkę która odlicza czas do danego wydarzenia. Najpierw pobieram ją inputem typu date i wysyłam do PHP do obróbki. Tam zamieniam np "-" na ",", dodaję potrzebne zera itp. Ale jest jeszcze jedna rzecz. W JS miesiące są numerowane od 0 do 11, a input wysyła je w wartościach od 1 do 12. Jak mogę to rozwiązać?
Formularz:
<!DOCTYPE HTML>
<html lang="pl">
<head>
metatagi i inne
</head>
<body>
<div class="container">
<header>
<h1>Odliczanie</h1>
</header>
<main>
<article>
<h2>Wybierz datę:</h2>
<form method="post" action="submit.php">
<input type="date" name="data"/>
<input type="submit" id="button" value="Odliczaj"/><br /><br />
<a href="index.php"><div id="button"><i class="icon-left-big"></i> Powrót</div></a>
</form>
</article>
</main>
</div>
</body>
</html>
Skrypt PHP:
<?php
session_start();
if(!isset($_POST['data']))
{
header('Location: innadata.php');
exit();
}
$odebrana_data = $_POST['data']; //np. 03 czerwiec 2021 wygląda tak: 2021-06-03
$data_przetworzona = str_replace("-", ", ", $odebrana_data); //2021, 06, 03
$data_plus_zera = $data_przetworzona.", 0, 0, 0, 0"; //2021, 06, 03, 0, 0, 0, 0
//header('Location: innadata_o.php')
?>
Skrypt JS:
<?php
session_start();
$data = $_SESSION['data'];
?>
var data = "<?php echo $data;?>";
function dataWydarzenia(rok, miesiac, dzien, godzina, minuta, sekunda, milisekunda)
{
var dataWydarzenia = new Date(rok, miesiac, dzien, godzina, minuta, sekunda, milisekunda);
//alert(dataWydarzenia);
}
dataWydarzenia(data);
function aktualnyCzas()
{
var czasTeraz = new Date();
}
function czasDoWydarzenia(rok, miesiac, dzien, godzina, minuta, sekunda, milisekunda)
{
var aktualnyCzas = new Date();
var dataWydarzenia = new Date(rok, miesiac, dzien, godzina, minuta, sekunda, milisekunda);
var pozostalyCzas = dataWydarzenia.getTime() - aktualnyCzas.getTime();
if (pozostalyCzas > 0)
{
var s = pozostalyCzas / 1000; // sekundy
var m = s / 60; // minuty
var h = m / 60; // godziny
var d = h / 24; // dni
var sLeft = Math.floor(s % 60); // pozostało sekund
var mLeft = Math.floor(m % 60); // pozostało minut
var hLeft = Math.floor(h % 24); // pozostało godzin
var dLeft = Math.floor(d); // pozostało dni
if (hLeft < 10)
hLeft = "0" + hLeft;
if (mLeft < 10)
mLeft = "0" + mLeft;
if (sLeft < 10)
sLeft = "0" + sLeft;
if (dLeft == 0)
{
if (hLeft == 0)
{
if (mLeft == 0)
{
return sLeft;
}
else
{
return mLeft + " : " + sLeft;
}
}
else
{
return hLeft + " : " + mLeft + " : " + sLeft;
}
}
else
{
return dLeft + " : " + hLeft + " : " + mLeft + " : " + sLeft;
}
}
else
{
return "00";
}
}
function pokaz()
{
document.getElementById("czas").innerHTML = czasDoWydarzenia(data);
setInterval('document.getElementById("czas").innerHTML = czasDoWydarzenia('+data+')', 1000);
}