如何使用 Vue.js 根据当前日期/时间设置时间间隔

Posted

技术标签:

【中文标题】如何使用 Vue.js 根据当前日期/时间设置时间间隔【英文标题】:How can I set a time interval based on current date/time using Vue.js 【发布时间】:2020-07-10 04:29:58 【问题描述】:

假设当前日期/时间是 03/29/2020 02:10 PM。然后我想显示 7 组时间,间隔为 15 分钟,分别是 01:30 PM、01:45 PM、02:00 PM、02:15 PM、02:30 PM、02:45 PM 和 03:00 PM .

Current Date/Time =  03/29/2020 02:10 PM

<div :key="timeList">
      <button>timeList</button>
</div>

如何将 timeList 中的七组时间显示为 currentTime 的 15 分钟间隔

下午01:30 01:45 下午 下午02:00 下午02:15 下午02:30 02:45 下午 下午03:00

【问题讨论】:

【参考方案1】:

如果当前时间是 02:10,则下一个 15 分钟块从 02:15 开始。

无论如何,您可以使用内置的格式化函数来获得适当的格式,例如

/* 
** @param Date date: date to use for time blocks
** @param number mins: length of time block in minutes
**        should be an even divisor of 60, e.g. 5, 10, 12, 15
** @param number num: number of values to return
** @returns Array array of strings formatted as hh:mm ap
*/
function getTimes(date, mins, num) 
  // Copy date so don't affect original
  let d = new Date(date);
  // Get start of next block
  let dMins = d.getMinutes();
  let nextMin = Math.ceil(dMins/mins) * mins; 
  // If in first minute of first block, add 1
  if (!(dMins%mins)) nextMin += mins;
    
  d.setMinutes(nextMin, 0, 0);
  let result = [];
  let opts = hour:'2-digit', minute:'2-digit', hour12:true;
  
  while (num--) 
    result.push(d.toLocaleString('en', opts));
    d.setMinutes(d.getMinutes() + mins);
  
  
  return result;


console.log(getTimes(new Date(), 15, 7));

【讨论】:

这是我在 Vue JS 上的第一个项目,所以只是想弄清楚该函数是否应该在 monuted 或方法中?【参考方案2】:

我建议您为此使用moment。尽管这可以通过在不使用 moment 的情况下添加更多行来完成,但是在您的项目中添加 moment 将节省时间和精力。

<div id="app">
  <div v-for="item in timeList" :key="timeList">
      <button>item</button>
  </div>
</div>
<script>
new Vue(
  el: '#app',
  ...
  ...
  data: 
     timeList: [
     ],
  ,
 mounted: function()
   const current = new moment();
   for(let i=0;i<5;i++)
      this.timeList.push(current.format("HH:mm"));
      current.add(15, "minutes");
   

 
)
</script>

在这里查看时刻https://momentjs.com/docs/

【讨论】:

以上是关于如何使用 Vue.js 根据当前日期/时间设置时间间隔的主要内容,如果未能解决你的问题,请参考以下文章

vue如何利用单击事件输出当前时间?

使用 Orbeon 根据当前日期设置开始日期和停止日期

如何在vue js中设置默认日期

手机时间怎么设置?

手机时间怎么修改?

Vue JS如何根据传递的嵌套v-for值设置选项?