zpět k lekci

Kolik sekund už dnes uplynulo?

důležitost: 5

Napište funkci vraťDnešníSekundy(), která vrátí počet sekund, které uplynuly od začátku dnešního dne.

Například jestliže je právě 22:00 a dnes se neměnil letní čas na zimní nebo naopak, pak:

vraťDnešníSekundy() == 36000 // (3600 * 10)

Funkce by měla fungovat v kterýkoli den. To znamená, že by neměla mít napevno zakódovanou hodnotu „dneška“.

Abychom získali počet sekund, můžeme vygenerovat datum z dnešního dne a času 00:00:00 a pak je odečíst od „nynějška“.

Rozdílem bude počet milisekund od začátku dne, který bychom měli vydělit 1000, abychom získali sekundy:

function vraťDnešníSekundy() {
  let nyní = new Date();

  // vytvoříme objekt z dnešního dne/měsíce/roku
  let dnešek = new Date(nyní.getFullYear(), nyní.getMonth(), nyní.getDate());

  let rozdíl = nyní - dnešek; // rozdíl v milisekundách
  return Math.round(rozdíl / 1000); // vytvoříme sekundy
}

alert( vraťDnešníSekundy() );

Alternativním řešením by bylo získat hodiny, minuty a sekundy a převést je na sekundy:

function vraťDnešníSekundy() {
  let d = new Date();
  return d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds();
}

alert( vraťDnešníSekundy() );