javascript - Beräkna skillnaden mellan datum och starta timräkning från det resultatet


Jag har ett datum i följande format: datum: "2020-02-03T10:00:00";

Finns det ett sätt att beräkna skillnaden mellan den nuvarande tiden och 2020-02-03T10:00:00?

Sedan tänker jag starta en timer som börjar räkna från resultatet. Om resultatet är 30, vill jag att timern ska starta på 00:30:00, om det är 60, starta 01:00:00.

Kan någon hjälpa mig?

BLITZ

kod

data = [
    {
      date: "2020-02-03T10:00:00",
    },
  ];

  start(){
     this.interval = setInterval(() => {
     this.display = Date.now() - parseInt(this.data[0].date);
     console.log(this.display)

          }, 1000);
  }

Svar #1

Du behöver konvertera din sträng date: "2020-02-03T10:00:00" till ett Date-objekt för att kunna beräkna skillnaden.

Du kan använda new Date(dateString). Ett exempel kan vara:

data = [
{
  date: "2020-02-03T10:00:00",
},
];

start(){
 this.interval = setInterval(() => {
 var date2 = new Date(this.data[0].date)
 this.display = Date.now() - date2;
 console.log(this.display)

      }, 1000);
}

Tänk på att resultatet är skillnaden i millisekunder.

Svar #2

Jag tror att detta är något du vill ha i din funktion. Testad och fungerande: :)

    let difference = (+Date.now()) - (+new Date(this.data[0].date)) / 1000;
    this.interval = setInterval(() => {
      difference--; // difference++ for increasing values if wanted to count in different way
      const s = Math.floor(difference / 1) % 60;
      const m = Math.floor(difference / 60) % 60;
      const h = Math.floor(difference / (60 * 60)) % 24;
      this.display = `${h}:${m}:${s}`;
    }, 1000);

först konvertera båda datumen till tidsstämpel. Subtrahera och få skillnaden och dela den med 1000 för att få sekunder. På varje intervall minska sekunder med 1. Därefter, få timmar (const h), minuter (const m) och sekunder (const s) genom att använda formeln ovan. Skriv ut i display(this.display) egenskap.