javascript - 在 JavaScript 中每 X 分钟生成时间数组(作为字符串)

标签 javascript arrays

我试图在整个 24 小时内每 X 分钟创建一个时间数组(字符串,而不是 Date 对象)。例如,对于 5 分钟的间隔,数组将是:

['12:00 AM', '12:05 AM', '12:10 AM', '12:15 AM', ..., '11:55 PM']

我快速而肮脏的解决方案是使用 3 嵌套 for循环:
var times = []
  , periods = ['AM', 'PM']
  , hours = [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
  , prop = null
  , hour = null
  , min = null; 

for (prop in periods) {
  for (hour in hours) {
    for (min = 0; min < 60; min += 5) {
      times.push(('0' + hours[hour]).slice(-2) + ':' + ('0' + min).slice(-2) + " " + periods[prop]);
    }
  }
}

这会输出所需的结果,但我想知道是否有更优雅的解决方案。有没有办法做到这一点:
  • 更具可读性
  • 更小的时间复杂度
  • 最佳答案

    如果间隔仅以分钟 [0-60] 为单位设置,则在不创建日期对象的情况下并在单个循环中评估以下解决方案:

    var x = 5; //minutes interval
    var times = []; // time array
    var tt = 0; // start time
    var ap = ['AM', 'PM']; // AM-PM
    
    //loop to increment the time and push results in array
    for (var i=0;tt<24*60; i++) {
      var hh = Math.floor(tt/60); // getting hours of day in 0-24 format
      var mm = (tt%60); // getting minutes of the hour in 0-55 format
      times[i] = ("0" + (hh % 12)).slice(-2) + ':' + ("0" + mm).slice(-2) + ap[Math.floor(hh/12)]; // pushing data in array in [00:00 - 12:00 AM/PM format]
      tt = tt + x;
    }
    
    console.log(times);

    关于javascript - 在 JavaScript 中每 X 分钟生成时间数组(作为字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36125038/

    相关文章:

    java - 使用动态生成的名称访问数组的索引

    javascript - 从数组中提取和添加数字

    jquery - IndexOf和Arrays-优化此jQuery代码的最佳方法是什么?

    Android imageview onclick 几个 View

    javascript - 在 React 中运行 useEffect 后,处于状态的数组未更新

    javascript - React Hooks,prop 值在渲染之间随机变化

    css - 使用 ng-repeat 的二维数组动态页面布局

    javascript - 如何将JavaScript变量传递给服务器端方法

    javascript - 如何使用 JavaScript 检查 DOM 是否准备就绪?

    javascript - 将curl转换为ajax请求