在javascript中获取24小时的循环日期和时间

时间:2017-04-27 07:43:15

标签: javascript

当我在下拉列表中选择“过去24小时”时,我有一个下拉列表(值为“过去24小时”,“过去48小时”等) 我需要从现在到昨天的所有日期,每隔一小时。

我试过这个,

   var todayDate = new Date();
    if(type=="hours"){ // for hours based drop-down
        var oneDayAgo = new Date(todayDate.getTime());
        oneDayAgo.setDate(todayDate.getDate() - 1);
        console.log("oneDayAgo"+oneDayAgo);
        var hours = todayDate.getHours();
        for(var i = hours; i <= hours+24; i++) {
            if(i<25){
                var newHours=i;
                var newDates=todayDate.getFullYear() + "-" + ("00" + (todayDate.getMonth() + 1)).slice(-2) + "-" + ("00" + todayDate.getDate()).slice(-2) + " " + ("00" +newHours).slice(-2) + ":" + ("00" + todayDate.getMinutes()).slice(-2) + ":" + ("00" + todayDate.getSeconds()).slice(-2);
                console.log(newDates);
            }else{
                var newHours=i-24;
                var newDates=oneDayAgo.getFullYear() + "-" + ("00" + (oneDayAgo.getMonth() + 1)).slice(-2) + "-" + ("00" + oneDayAgo.getDate()).slice(-2) + " " + ("00" +newHours).slice(-2) + ":" + ("00" + oneDayAgo.getMinutes()).slice(-2) + ":" + ("00" + oneDayAgo.getSeconds()).slice(-2);
                console.log(newDates);
            }
        }
    }

我的预期输出是,

例如当前日期和时间是2014-04-27 13:07表示,

输出如2014-04-27 13:07,2014-04-27 12:07,2014-04-27 11:07,2014-04-27 10:07 .... 2014-04-26 13 :07

请帮忙。感谢

2 个答案:

答案 0 :(得分:0)

这是一个working sample,可能就是你想要的。

//get type and hoursOption from dropdowns
var type = 'hours'
var hoursOption = 48;

var todayDate = new Date();

if(type=="hours"){ // for hours based drop-down

    var hours = todayDate.getHours();
    for(var i = hours; i <= hours + hoursOption; i++) {
            todayDate.setHours(todayDate.getHours() - 1)
        var newDates = todayDate.getFullYear() + "-" + ("00" + (todayDate.getMonth() + 1)).slice(-2) + "-" + ("00" + todayDate.getDate()).slice(-2) + " " + ("00" + todayDate.getHours()).slice(-2) + ":" + ("00" + todayDate.getMinutes()).slice(-2) + ":" + ("00" + todayDate.getSeconds()).slice(-2);
            console.log(newDates);

    }
}

对于for-loop变量hours,我添加了来自下拉选项的hourOption,例如。 24,48,72等

在内部循环中,您可以使用todayDate,然后再减少一小时,这样就会显示向后计数的小时数。

答案 1 :(得分:0)

&#13;
&#13;
function getDateItems(hours) {
  var toDate = new Date();
  var fromDate = new Date();
  fromDate.setTime(fromDate.getTime() - (hours * 60 * 60 * 1000));
  var result = [];
  
  while (toDate >= fromDate) {
    result.push(toDate.getFullYear() + "-" + ("00" + (toDate.getMonth() + 1)).slice(-2) + "-" + ("00" + toDate.getDate()).slice(-2) + " " + ("00" + toDate.getHours()).slice(-2) + ":" + ("00" + toDate.getMinutes()).slice(-2) + ":" + ("00" + toDate.getSeconds()).slice(-2));
    // consider using moment.js library to format date
    
    toDate.setTime(toDate.getTime() - (1 * 60 * 60 * 1000));
  }

  return result;
}

var datesFrom24Hours = getDateItems(24);
var datesFrom48Hours = getDateItems(48);

console.log(datesFrom24Hours);
&#13;
&#13;
&#13;