Calculate number of weeks , days and hours from milliseconds

ε祈祈猫儿з 提交于 2019-12-05 00:08:35

问题


There were many similar questions around but none addressed this calculation. Using javascript i it is easy to find the number of milliseconds diff b/w 2 dates for ex:

var mil = Math.floor(new Date("1/1/2012")  - new Date("1/7/2012"))

mil is assigned 518400000

to get weeks i would do below

var weeks = mil / (1000*7*24*60*60);

in the above example it exactly fits 1 week. For other possible inputs i would like to get output as ex:

n Weeks, y days , z hours

So i did mil % (1000*7*24*3600) to get the modulus and from the remainder calculate number of days. but astonishingly this was answer i got from console 1 weeks , 6 days seems the week calculated before is also accounted for days again.

How should i calculate these correctly?


回答1:


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;

Assuming mils is non-negative, this leaves mils in the range [0, 1000), leaves minutes and seconds in the range [0, 60), leaves hours in the range [0, 24), and leaves days in the range [0, 7).




回答2:


There should be 6 days between them, not one week. Your weeks calculation needs to round down:

var weeks = Math.floor(mil / (1000 * 7 * 24 * 60 * 60));

Also, your milliseconds are negative; you want either

var mil = new Date("1/7/2012") - new Date("1/1/2012");

or

var weeks = Math.floor(Math.abs(mil) / (1000 * 7 * 24 * 60 * 60));


来源:https://stackoverflow.com/questions/9407426/calculate-number-of-weeks-days-and-hours-from-milliseconds

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!