Как сложить секунды с секундами в JavaScript? - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть текущее время в секундах и продолжительность в секундах.Я хочу добавить обе секунды, чтобы вычислить время окончания песни (например).Но у меня странный формат в результате.

Вот мой код:

// This is my song's duration
var duration = new Date("Sept 21, 2019 00:03:32");
var durationSeconds = duration.getSeconds();

// Current second
var date = new Date();
var seconds = date.getSeconds();
var differenceSecondsConverted = date.setSeconds(seconds + durationSeconds);

console.log(differenceSecondsConverted);

И результат примерно такой: 1569102592740

Спасибо

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Вы можете получить объект даты для времени, скажем, 3:32, добавив 3 минуты и 32 секунды к текущей дате, например,

// time is minutes and seconds as mm:ss
function nowPlus(time) {
  let [m, s] = time.split(':').map(Number);
  let now = new Date();
  now.setMinutes(now.getMinutes() + m, now.getSeconds() + s);
  return now;
}

console.log('In 3:32 it will be: ' + nowPlus('3:32').toLocaleString(undefined, {hour12:false, hour: 'numeric', minute:'2-digit', second:'2-digit'}));
0 голосов
/ 22 сентября 2019

На самом деле код работает, как и должно быть, возможно, вы просто упускаете какую-то концепцию.

new Date() - это конструктор, который возвращает экземпляр Date объекта.

Этот объектимеют несколько свойств.Когда вы создаете его, он возвращает что-то вроде Sun Sep 22 2019 01:21:14 GMT+0200 (CEST), которое является строковым представлением текущего времени.

Однако это строковое представление не так, как JS на самом деле «думает» о времени.

Внутренне, «время» для JS - это количество миллисекунд, прошедших с 1 января 1970 года, 00: 00: 00.

Это выглядит примерно так: 1569108461979.

Вы можете увидеть это, есливы запускаете Date.now();

Кроме того, если вы выполняете какие-либо вычисления (не напрямую, а с использованием таких методов, как .setDate) с new Date(), он будет внутренне вычислен как миллисекунды, полученные с 1, 1970, 00:00: 00.

Итак, основная проблема в вашем коде состоит в том, что ваша переменная duration на самом деле не является "продолжительностью".

Она просто содержит объект, представляющий 21 сентября 2019 00: 03: 32.

Это всего лишь момент во времени (3 минуты 32 секунды после полуночи 20 сентября 2019 года).

Чтобы рассчитать, когда песня закончится, если она начнется правильноТеперь вы бы сделали что-то вроде:


let now = Date.now();
// Song duration in milliseconds
let songDuration = 201000;

let songEndTime = now + songDuration;

console.log( new Date(songEndTime) );

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...