无法在javascript中使用Date()方法获得预期结果

时间:2014-06-17 12:27:14

标签: javascript date datetime

我正在制作音乐应用程序。如果添加了音乐文件,那么我应该获得持续时间(以毫秒为单位)并将持续时间转换为分钟。

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 个答案:

答案 0 :(得分:2)

Date对象需要自1970年1月1日UTC以来的毫秒数。但是,getMinutesgetSeconds函数将相对于代码运行的时区输出。

如果您想使用Date对象,则应使用getUTCMinutesgetUTCSeconds代替。

然而,正如其他人所指出的,这不是Date对象的最佳用例。您可以使用简单的数学运算将毫秒转换为分钟和秒。

答案 1 :(得分:1)

Date构造函数实例化一个传递给它的可选参数的新对象。向它传递一个毫秒数将为您提供一个新的Date对象,该对象是自纪元以来的日期和时间,相对于您传递给它的毫秒数。 getMinutes可能给了你42,因为你传递给Date构造函数的时间是在构建的任何日期的第42分钟。

您可以使用简单的乘法将毫秒转换为分钟。

numberOfMilliseconds / (1000*60)