项目显示运行时间的实现

思路

数据转化

获取里面的小时、天数、分钟数 等等信息
定义数据截取的格式(使用正则表达式)
regex = /(\d{2})\d{2})\d{2}).(\d+)/;
问题来了 正则表达式只截取固定位数的数据来作为不同的数据的区分
那么如果时间在一个小时以内 、一天以内的数据应该如何处理呢?

使用数据的长度进行区分

比如数据有这两种
00:57:28.8377329
12.00:57:28.8377329
上面的是不超过一天的数据
下面的是超过一天的
他们的长度分别是16和18
那么通过
if (response.data.accumulatedRunTime.length > 16) 来区分 以匹配不同的正则表达式

获取得到的数组

     const matches = response.data.accumulatedRunTime.match(regex);

项目显示运行时间的实现_第1张图片

里面的不同下标存储着不同的信息 直接取用即可

但是不同长度的下标里面的数据可能不一样

如果直接取用可能会发生错位
使用反向的数组下标
const hours = parseInt(matches[matches.length - 4]);
const minutes = parseInt(matches[matches.length - 3]);
const seconds = parseInt(matches[matches.length - 2]);

代码

  getRunningTimeData().then((response) => {
    console.log(response.data.accumulatedRunTime.length)

    let regex = null
    let days = null
    if (response.data.accumulatedRunTime.length > 16) { // 超过一天的格式
      regex = /(\d{1}).(\d{2}):(\d{2}):(\d{2})\.(\d+)/;
    } else {
      regex = /(\d{2}):(\d{2}):(\d{2})\.(\d+)/;
    }

    const matches = response.data.accumulatedRunTime.match(regex);
    console.log(response.data.accumulatedRunTime.match(regex))
    // 提取匹配的值
    if (response.data.accumulatedRunTime.length > 16) { // 超过一天的格式
      days = parseInt(matches[matches.length - 5]);
    } else {
      days = 0
    }

    const hours = parseInt(matches[matches.length - 4]);
    const minutes = parseInt(matches[matches.length - 3]);
    const seconds = parseInt(matches[matches.length - 2]);
    if (data.value.effectiverunningTime != response.data.accumulatedRunTime) {
      time.value = `${days}天${hours}小时${minutes}分钟${seconds}秒`
    }

  });
}

你可能感兴趣的:(javascript,前端,开发语言)