周围有许多类似的问题,但没有一个解决这个问题。使用javascript我可以很容易地找到ex的diff b/w 2日期的毫秒数:

var mil = Math.floor(new Date("1/1/2012")  - new Date("1/7/2012"))
mil被分配了518400000得到我将在下面做的几周
var weeks = mil / (1000*7*24*60*60);
在上面的示例中,它完全适合1周。对于其他可能的输入,我想得到例如ex的输出:
n Weeks, y days , z hours
因此,我做了mil % (1000*7*24*3600)来获取模数,然后从其余部分计算天数。但令人惊讶的是,这是我从控制台获得的答案1 weeks , 6 days似乎之前计算的星期也占了几天。
我应该如何正确计算这些?

最佳答案

var seconds = (mil / 1000) | 0;
mil -= seconds * 1000;

var minutes = (seconds / 60) | 0;
seconds -= minutes * 60;

var hours = (minutes / 60) | 0;
minutes -= hours * 60;

var days = (hours / 24) | 0;
hours -= days * 24;

var weeks = (days / 7) | 0;
days -= weeks * 7;

假设mils为非负数,则将mils留在[0,1000)范围内,将minutesseconds留在[0,60)范围内,将hours留在[0,24)范围内,并将days留在[ 0,7)。

关于javascript - 从毫秒计算周数,天数和小时数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9407426/

10-12 17:10
查看更多