6

似たような質問がたくさんありましたが、この計算に対処したものはありませんでした。javascript i を使用すると、ex のミリ秒差分 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ます。他の可能な入力については、例として出力を取得したいと思います:

n Weeks, y days , z hours

だから私はmil % (1000*7*24*3600)モジュラスを取得し、残りから日数を計算しました。しかし驚くべきことに、これは私がコンソールから得た答えでし 1 weeks , 6 daysた。

これらを正しく計算するにはどうすればよいですか?

4

2 に答える 2

12
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) の葉。

于 2012-02-23T05:01:02.023 に答える
4

それらの間は 1 週間ではなく 6 日である必要があります。週の計算は切り捨てる必要があります:

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

また、ミリ秒は負です。どちらかが欲しい

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

また

var weeks = Math.floor(Math.abs(mil) / (1000 * 7 * 24 * 60 * 60));
于 2012-02-23T04:59:28.070 に答える