首页 > 解决方案 > 如何在 javascript 中创建时间来评估函数?

问题描述

我正在尝试创建一个函数,它选择一个时间并将以分钟为单位的时间转换为一个值。这是我的代码,我在控制台日志中得到了一个打字错误。

请查看此小提琴以查看我收到的错误 https://jsfiddle.net/tjhunt03/npLxq0hm/16/

在此处输入图像描述

function _slicedToArray(arr, i) {
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
}

function _nonIterableRest() {
  throw new TypeError("Invalid attempt to destructure non-iterable instance");
}

function _iterableToArrayLimit(arr, i) {
  var _arr = [];
  var _n = true;
  var _d = false;
  var _e = undefined;
  try {
    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
      _arr.push(_s.value);
      if (i && _arr.length === i) break;
    }
  } catch (err) {
    _d = true;
    _e = err;
  } finally {
    try {
      if (!_n && _i["return"] != null) _i["return"]();
    } finally {
      if (_d) throw _e;
    }
  }
  return _arr;
}

function _arrayWithHoles(arr) {
  if (Array.isArray(arr)) return arr;
}


var mealBreakStringToValue = function mealBreakStringToValue(timeStr) {
  var _timeStr$match = timeStr.match(/(\d+):(\d+) ([ap]m)/),
    _timeStr$match2 = _slicedToArray(_timeStr$match, 4),
    hours = _timeStr$match2[1],
    minutes = _timeStr$match2[2],
    ampm = _timeStr$match2[3];

  var minutesModifier = minutes === 'mins' ? 15 : 30;
  return Number(hours) + ampmHourModifier + minutes / 60;
};
console.log(mealBreakStringToValue('30 mins'));

标签: javascript

解决方案


根据我从评论中了解到的情况,您需要将字符串 '30 mins' 转换为等效的小时数。下面是执行此操作的代码。您需要使用与用于解析“am/pm”字符串的正则表达式不同的正则表达式。

var mealBreakStringToValue = function mealBreakStringToValue(mealBreak) {
  const mealBreakMatch = mealBreak.match(/(\d{1,2}) mins/i);
  const minutes = mealBreakMatch[1];
  return Number(minutes / 60);
};
console.log(mealBreakStringToValue('30 mins'));


推荐阅读