四分之一小时不准确

时间:2016-09-04 16:34:04

标签: javascript date

为什么四分之一小时不会给我看1,2,3,4?还是所有数字? 我试着每15分钟一次。

是下一个15分钟不计算的下一个发射对吗?

为什么,不正确计算接下来的15分钟?

我期待四分之一小时输出所有15分钟。

X:15 = 1
X:30 = 2
X:45 = 3
X:00 = 4 or 0

目前的结果:

    4/9/2016 @ 18:30:0
fiddle.jshell.net/:60 2
fiddle.jshell.net/:59 4/9/2016 @ 18:30:0
fiddle.jshell.net/:60 2
fiddle.jshell.net/:59 4/9/2016 @ 18:30:0
fiddle.jshell.net/:60 2
fiddle.jshell.net/:59 4/9/2016 @ 19:0:0
fiddle.jshell.net/:60 0

小提琴:https://jsfiddle.net/g2x1jmzb/

代码:

   var y = 1;

   while(y <= 4) {
      var interval = (900000 * y);
    var nextlaunch = new Date(Math.ceil(new Date().getTime()/interval)*interval);
   var datetime = "" + nextlaunch.getDate() + "/"
                + (nextlaunch.getMonth()+1)  + "/" 
                + nextlaunch.getFullYear() + " @ "  
                + nextlaunch.getHours() + ":"  
                + nextlaunch.getMinutes() + ":" 
                + nextlaunch.getSeconds();

  quarterHours = Math.round(nextlaunch.getMinutes()/15);
  console.log(datetime);
  console.log(quarterHours);
  y++;
   }

1 个答案:

答案 0 :(得分:0)

您可以使用此代码:

&#13;
&#13;
function pad(n) {
    return ('0'+n).substr(-2);
}
   
var interval = 15 * 60 * 1000; // = # miliseconds in 15 minutes
var nextlaunch = new Date(Math.ceil(new Date().getTime()/interval)*interval);
for (var y = 1; y <= 4; y++) {
    var datetime = pad(nextlaunch.getDate()) + "/"
                + pad((nextlaunch.getMonth()+1))  + "/" 
                + nextlaunch.getFullYear() + " @ "  
                + pad(nextlaunch.getHours()) + ":"  
                + pad(nextlaunch.getMinutes()) + ":" 
                + pad(nextlaunch.getSeconds());
    quarterHours = Math.round(nextlaunch.getMinutes()/15);
    console.log(datetime);
    nextlaunch.setMinutes(nextlaunch.getMinutes()+15);
}
&#13;
&#13;
&#13;

这个想法是你通过添加15分钟来增加循环中的nextlaunch变量。它的初始值可以在循环之外设置,使用适当的间隔。

我添加了一个函数,用日期格式中的零进行适当的填充。您可以考虑使用库来处理日期,例如moment.js