为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Javascript 将小时转换为 HH:MM:SS

使用 Javascript 将小时转换为 HH:MM:SS

HUWWW 2021-12-02 16:39:12
我正在使用的 api 需要 HH:MM:SS 格式的时间,但是我的输出只是显示时间的数值(例如:8:00am 输出为 8)。如何将其转换为 HH:MM:SS 格式?let targetStr = getTree().data.boards[0].groups[0].items[0].name;let fields = ['DATE', 'TIME', 'DURATION', 'TYPE'];console.log(extractData(targetStr, fields));function extractData(str, fields) {  return str.split(/\s*\|\s*/).reduce((res, entry) => {    let dat = entry.split(/\s*:\s*/);    return fields.indexOf(dat[0]) > -1 ? Object.assign(res, { [dat[0]]: dat[1] }) : res;  }, {});}function getTree() {  return {    "data": {      "boards": [{        "owner": {          "id": 555555555        },        "groups": [{          "id": "new_group",          "title": "Forecasts",          "items": [{            "id": "355670938",            "name": "PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 am | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW:"          }]        }]      }]    },    "account_id": 55555555  };}
查看完整描述

3 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

let targetStr = getTree().data.boards[0].groups[0].items[0].name;

let fields = ['DATE', 'TIME', 'DURATION', 'TYPE'];


console.log(extractData(targetStr, fields));


function extractData(str, fields) {

    return str.split(/\s*\|\s*/).reduce((res, entry) => {

        var dat = entry.split(/\s*:\s*/);

        if (dat.length > 2) {

            dat = (dat + '').split(',');


            dat[2] = dat[2].split(' ');

            dat[1] = checkTime(dat[1], dat[2][1])

            dat[1] = dat[1].concat(':' + dat[2][0] + ':00')

        }

        return fields.indexOf(dat[0]) > -1 ? Object.assign(res, { [dat[0]]: dat[1] }) : res;

    }, {});

}

function checkTime(i, m) {

    if (i < 10) {

        i = "0" + i;

    }

    if (m == 'pm') {

        i = parseInt(i) + 12

    }

    return i + '';

}


function getTree() {

    return {

        "data": {

            "boards": [{

                "owner": {

                    "id": 555555555

                },

                "groups": [{

                    "id": "new_group",

                    "title": "Forecasts",

                    "items": [{

                        "id": "355670938",

                        "name": "PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 am | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW:"

                    }]

                }]

            }]

        },

        "account_id": 55555555

    };

}


查看完整回答
反对 回复 2021-12-02
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

鉴于 TIME 格式总是像 'HH:MM (am|pm)' 你可以像这样重新格式化它:


let targetStr = getTree().data.boards[0].groups[0].items[0].name;

let fields = ['DATE', 'TIME', 'DURATION', 'TYPE'];

const data = extractData(targetStr, fields);

const [hours, minutes, amPm] = data.TIME.split(/[\s|:]/);

console.log({

  ...data,

  TIME: [

    (amPm === 'am') ? hours : (parseInt(hours) + 12),

    minutes,

    '00'

  ].join(':')

});



function extractData(str, fields) {

  return str.split(/\s*\|\s*/).reduce((res, entry) => {

    let [key, ...val] = entry.split(/\s*:\s*/);

    return fields.indexOf(key) > -1 ? Object.assign(res, { [key]: val.join(':') }) : res;

  }, {});

}

    

function getTree() {

  return {

    "data": {

      "boards": [{

        "owner": {

          "id": 555555555

        },

        "groups": [{

          "id": "new_group",

          "title": "Forecasts",

          "items": [{

            "id": "355670938",

            "name": "PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 am | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW:"

          }]

        }]

      }]

    },

    "account_id": 55555555

  };

}


查看完整回答
反对 回复 2021-12-02
?
长风秋雁

TA贡献1757条经验 获得超7个赞

您可以提取h,m和am/pm部分,h如果是,则增加12 pm。由于输入没有秒字段,所以只是:00在末尾附加一个:


function hms(whatever){

  var parts=whatever.match(/TIME\:\s(\d+)\:(\d+)\s([^\s]+)/);

  var h=parseInt(parts[1]);

  var m=parts[2];

  if(parts[3]=="pm")h+=12;

  return ("0"+h).slice(-2)+":"+m+":00";

}


var test1="PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 am | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW";

var test2="PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 pm | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW";


console.log(hms(test1));

console.log(hms(test2));

test2修改为pm)。


查看完整回答
反对 回复 2021-12-02
  • 3 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信