Невозможно получить ожидаемый результат с методом Date() в JavaScript
Я работаю над музыкальным приложением. Если музыкальный файл был добавлен, я должен получить длительность (в миллисекундах) и преобразовать ее в минуты.
var d = new Date(ms);
var hms = d.getMinutes().toString() +':'+ d.getSeconds().toString();
Если я предоставляю ms = 331807;
expected answer is = 11:42
но result is = 41:02
Я не могу понять проблему. Может кто-нибудь, пожалуйста, помогите мне найти решение?
2 ответа
Date
Объект ожидает миллисекунды с 1 января 1970 года по Гринвичу. Тем не менее getMinutes
а также getSeconds
функции будут выводиться относительно часового пояса, в котором выполняется код.
Если вы хотите использовать Date
объект для этого, вы должны использовать getUTCMinutes
а также getUTCSeconds
вместо.
Однако, как отмечали другие, это не лучший вариант использования Date
объект. Вы можете сделать простую математику, чтобы преобразовать миллисекунды в минуты и секунды.
Date
конструктор создает новый объект с необязательным аргументом, переданным ему. Передавая количество миллисекунд, вы получаете новый Date
объект, который является датой и временем с начала эпохи, относительно количества миллисекунд, которые вы ему передали. getMinutes
вероятно, дал вам 42, потому что время, которое вы прошли в Date
конструктор был на 42-й минуте любой даты, когда был построен.
Вы можете конвертировать миллисекунды в минуты с простым умножением.
numberOfMilliseconds / (1000*60)