Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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将小时转换为HH:MM:SS_Javascript_Node.js - Fatal编程技术网

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

使用Javascript将小时转换为HH:MM:SS,javascript,node.js,Javascript,Node.js,我使用的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 extr

我使用的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
  };
}

给定时间格式总是类似于“HH:MM(am | pm)”,u可以这样重新格式化:

let targetStr=getTree().data.boards[0]。组[0]。项[0]。名称;
let字段=[“日期”、“时间”、“持续时间”、“类型”];
常量数据=提取数据(targetStr,字段);
常量[小时,分钟,安培]=数据.TIME.split(/[\s |::]/);
console.log({
数据
时间:[
(amPm=='am')?小时:(parseInt(小时)+12),
分钟
'00'
].join(“:”)
});
函数提取数据(str,字段){
返回str.split(/\s*\\s*/).reduce((res,entry)=>{
let[key,…val]=entry.split(/\s*:\s*/);
返回fields.indexOf(key)>-1?Object.assign(res,{[key]:val.join(':')}):res;
}, {});
}
函数getTree(){
返回{
“数据”:{
“董事会”:[{
“所有者”:{
“id”:555
},
“团体”:[{
“id”:“新集团”,
“标题”:“预测”,
“项目”:[{
“id”:“355670938”,
“名称”:“管道:生产和客户管理|阶段:新支持摄入|名称:测试|日期:2019年10月27日|时间:上午8:00 |时区:中部时间|持续时间:60分钟|类型:所有虚拟|观众视图:”
}]
}]
}]
},
“账户id”:5555
};

}
可以提取
h
m
am
/
pm
部件,如果是
pm
,则可用12增加
pm
。由于输入没有秒字段,因此它只是在末尾追加一个
:00

功能hms(无论什么){
var parts=which.match(/TIME\:\s(\d+):(\d+)\s([^\s]+)/);
var h=parseInt(第[1]部分);
var m=零件[2];
如果(零件[3]=“pm”)h+=12;
返回(“0”+h).slice(-2)+:“+m+”:00”;
}
var test1=“管道:生产和客户管理|阶段:新支持摄入|名称:TESTY |日期:2019年10月27日|时间:上午8:00 |时区:中心时间|持续时间:60分钟|类型:所有虚拟|观众视图”;
var test2=“管道:生产和客户管理|阶段:新支持摄入|名称:TESTY |日期:2019年10月27日|时间:晚上8:00 |时区:中央时间|持续时间:60分钟|类型:所有虚拟|观众视图”;
console.log(hms(test1));
console.log(hms(test2))
let targetStr=getTree().data.boards[0]。组[0]。项[0]。名称;
let字段=[“日期”、“时间”、“持续时间”、“类型”];
日志(提取数据(targetStr,字段));
函数提取数据(str,字段){
返回str.split(/\s*\\s*/).reduce((res,entry)=>{
var dat=entry.split(/\s*:\s*/);
如果(数据长度>2){
dat=(dat+“”).split(‘,’);
dat[2]=dat[2]。拆分(“”);
dat[1]=校验时间(dat[1],dat[2][1])
dat[1]=dat[1]。concat(':'+dat[2][0]+':00')
}
返回fields.indexOf(dat[0])>-1?Object.assign(res,{[dat[0]]:dat[1]}):res;
}, {});
}
功能检查时间(i,m){
如果(i<10){
i=“0”+i;
}
如果(m='pm'){
i=parseInt(i)+12
}
返回i+“”;
}
函数getTree(){
返回{
“数据”:{
“董事会”:[{
“所有者”:{
“id”:555
},
“团体”:[{
“id”:“新集团”,
“标题”:“预测”,
“项目”:[{
“id”:“355670938”,
“名称”:“管道:生产和客户管理|阶段:新支持摄入|名称:测试|日期:2019年10月27日|时间:上午8:00 |时区:中部时间|持续时间:60分钟|类型:所有虚拟|观众视图:”
}]
}]
}]
},
“账户id”:5555
};

} /代码>您是否考虑使用LIB?当您开始使用日期和时间时,moment.js非常有用。检查:因为您的数据有缺陷:不能出现在字段中,因为它是语法的一部分。您可以使用“
”:“
”进行拆分,但最好使用支持此功能的语法,例如JSON或XML。您能够控制API的输出吗?API似乎有问题,以有问题的格式返回时区未知时间(见上文)。IMO API的最佳输出格式是ISO字符串:
2019-10-24T12:52:05+00:00
。任何像样的库,如
momentjs
,都可以完美地解析这一点。这是我使用过的最差的API谢谢!我怎样才能在10点前的几个小时添加0?例如,测试中的8是8:00:00,我需要它在08:00:00?Sorrylook这里:@klaurtar Ok,在前面添加了填充。它必须是08:00:00格式。因此,如果有一种方法可以在10:00:00之前在times前面附加一个0,那么您的解决方案将是完美的