zpět k lekci

Kolik sekund zbývá do zítřka?

důležitost: 5

Vytvořte funkci vraťSekundyDoZítřka(), která vrátí počet sekund, které zbývají do zítřka.

Například jestliže právě je 23:00, pak:

vraťSekundyDoZítřka() == 3600

P.S. Funkce by měla fungovat v kterémkoli dni, „dnešek“ v ní nemá být napevno zakódován.

Abychom získali počet milisekund zbývajících do zítřka, můžeme odečíst aktuální datum od „zítřka 00:00:00“.

Nejprve tento „zítřek“ vygenerujeme a pak to provedeme:

function vraťSekundyDoZítřka() {
  let nyní = new Date();

  // zítřejší datum
  let zítřek = new Date(nyní.getFullYear(), nyní.getMonth(), nyní.getDate()+1);

  let rozdíl = zítřek - nyní; // rozdíl v ms
  return Math.round(rozdíl / 1000); // převod na sekundy
}

alert(vraťSekundyDoZítřka());

Alternativní řešení:

function vraťSekundyDoZítřka() {
  let nyní = new Date();
  let hodiny = nyní.getHours();
  let minuty = nyní.getMinutes();
  let sekundy = nyní.getSeconds();
  let celkemSekundDnes = (hodiny * 60 + minuty) * 60 + sekundy;
  let celkemSekundZaDen = 86400;

  return celkemSekundZaDen - celkemSekundDnes;
}

alert(vraťSekundyDoZítřka());

Prosíme všimněte si, že mnoho zemí používá letní čas, takže mohou existovat dny, které mají 23 nebo 25 hodin. S takovými dny můžeme chtít zacházet odlišně.