Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两次之间增加30分钟的间隔_Javascript_Arrays_String_Loops_Date - Fatal编程技术网

Javascript 两次之间增加30分钟的间隔

Javascript 两次之间增加30分钟的间隔,javascript,arrays,string,loops,date,Javascript,Arrays,String,Loops,Date,我有从和到时间根据铁路时间,现在我转换成正常时间上午到下午。但在那之后,我需要增加30分钟的休息时间。我对迭代器方法有点困惑。请帮忙,谢谢 我的代码 let fromtime = '09:00:00' let totime = '21:00:00' let getGenTime = (timeString) => { let H = +timeString.substr(0, 2); let h = (H % 12) || 12; let ampm

我有从和到时间根据铁路时间,现在我转换成正常时间上午到下午。但在那之后,我需要增加30分钟的休息时间。我对迭代器方法有点困惑。请帮忙,谢谢

我的代码

let fromtime = '09:00:00'

let totime = '21:00:00'

let getGenTime = (timeString) => {
      let H = +timeString.substr(0, 2);
      let h = (H % 12) || 12;
      let ampm = H < 12 ? " AM" : " PM";
      return timeString = h + timeString.substr(2, 3) + ampm;
}
控制台中的预期结果:

 09:00 AM
 09:30 AM
 10:00 AM
 10:30 AM
 11:00 AM
 ....
 .....
 08:30 PM
 09:00 PM

如果使用
Date
对象而不是
strings
,或者使用
moment.js
,这会更好,因为后者提供了许多有用的方法

但无论如何,它只需要一个带有一些检查的循环就可以实现您想要的功能,我制作了一个函数,它将返回
fromtime
totime
之间所有时间的数组:

function returnTimesInBetween(start, end) {
  var timesInBetween = [];
  var startH = parseInt(start.split(":")[0]);
  var startM = parseInt(start.split(":")[1]);
  var endH = parseInt(end.split(":")[0]);
  var endM = parseInt(end.split(":")[1]);

  if (startM == 30)
    startH++;
  for (var i = startH; i < endH; i++) {
    timesInBetween.push(i < 10 ? "0" + i + ":00" : i + ":00");
    timesInBetween.push(i < 10 ? "0" + i + ":30" : i + ":30");
  }
  timesInBetween.push(endH + ":00");
  if (endM == 30)
    timesInBetween.push(endH + ":30")

  return timesInBetween.map(getGenTime);
}
函数returnTimesInBetween(开始、结束){
var timesInBetween=[];
var startH=parseInt(start.split(“:”[0]);
var startM=parseInt(start.split(“:”[1]);
var endH=parseInt(end.split(“:”[0]);
var endM=parseInt(end.split(“:”[1]);
如果(startM==30)
startH++;
对于(var i=startH;i
演示:

let fromtime='09:00:00'
让totime='21:00:00'
让getGenTime=(时间字符串)=>{
设H=+timeString.substr(0,2);
设h=(h%12)| 12;
设ampm=H<12?“AM”:“PM”;
返回时间串=h+时间串substr(2,3)+ampm;
}
函数returnTimesInBetween(开始、结束){
var timesInBetween=[];
var startH=parseInt(start.split(“:”[0]);
var startM=parseInt(start.split(“:”[1]);
var endH=parseInt(end.split(“:”[0]);
var endM=parseInt(end.split(“:”[1]);
如果(startM==30)
startH++;
对于(var i=startH;ilog(returnTimesInBetween(fromtime,totime))
为什么不直接使用
Date
对象呢?而
moment.js
libary应该有助于设置时间的格式。@Barmar实际上我是从数据库和数据中获取这些数据的,所以我考虑了添加30分钟的循环。另外,由于我是JavaScriptor新手,请不要编写晦涩难懂的代码。将来您或任何维护此代码的人都不会满意它。如果您在日期上操作,请使用。查看创建日期范围的示例:是的,使用日期更好,因为我需要验证上一次是否应禁用..您能告诉我如何根据日期或时间转换上述代码吗moment@NarayananS当然可以,我正在编辑答案:)如果可能的话,你能根据日期对象生成结果吗..请帮助我有点困惑我编辑了答案,我希望演示能帮助你现在理解它。@Narayans现在这有意义吗?如果答案对你有帮助,请接受/投赞成票。谢谢
function returnTimesInBetween(start, end) {
  var timesInBetween = [];
  var startH = parseInt(start.split(":")[0]);
  var startM = parseInt(start.split(":")[1]);
  var endH = parseInt(end.split(":")[0]);
  var endM = parseInt(end.split(":")[1]);

  if (startM == 30)
    startH++;
  for (var i = startH; i < endH; i++) {
    timesInBetween.push(i < 10 ? "0" + i + ":00" : i + ":00");
    timesInBetween.push(i < 10 ? "0" + i + ":30" : i + ":30");
  }
  timesInBetween.push(endH + ":00");
  if (endM == 30)
    timesInBetween.push(endH + ":30")

  return timesInBetween.map(getGenTime);
}