在JavaScript中将字符串(150000)转换为时间(hh:mm:ss)

时间:2018-08-30 11:21:48

标签: javascript

我是JS新手。有人可以告诉我用Javascript是否可以将字符串(例如:“ 140000”)转换为时间(例如:14:00:00)。

2 个答案:

答案 0 :(得分:2)

您可以这样做:

  1. 使用split方法将文本分割成一个数组。
  2. 映射到数组,并使用item + :方法将所有具有索引的项目替换为map
  3. 使用join方法再次将您的数组添加为字符串。
  4. 从结果中删除最后一个:

let convertToTime = str => str
            .split("")
            .map((item, index) => (index % 2 != 0) ? item + ':' : item)
            .join("")
            .slice(0, -1);
console.log(convertToTime("140000")); // 14:00:00
console.log(convertToTime("173003")); // 17:30:03
console.log(convertToTime("225510")); // 22:55:10
console.log(convertToTime("010201")); // 01:02:01

答案 1 :(得分:0)

这有点棘手,因为……在Javascript中没有Time对象。

只有一个Date对象,尽管名称有点误导,因为Date对象同时包含“日期”和“时间”。这种看似混乱的约定背后有一个原因。我不会花太多时间来详细说明,但简而言之,(对于人脑)引用“时间”是不可靠的。

为此,我只推荐reading this answer,它会非常好地解释它。


无论哪种方式,这个简单的功能都能解决问题。

toDate(what){}

  

在成功的时间转换字符串之后,return是一个新创建的Date对象。否则为return -1(或者您也可以抛出Exception,由您自己决定)

var str = '143025';

function toDate(what){ // turns string into Date() object
  var result;
  if (what.length === 6) { // must be in HH:MM:SS length
    var timearr = what.match(/.{1,2}/g); // splits time to HH:MM:SS array
     if (timearr[0] <= 24 && timearr[1] <= 60 && timearr[2] <= 60){
       return new Date('01 January 0001 ' + timearr[0] + ':'+
                           timearr[1] + ':' + timearr[2] + ' GMT'); // valid time format
     } 
  }
  
  return -1;
}


var mytime = toDate(str);
console.log(mytime.toUTCString());

请注意,Date本身仅是序列号的表示,如果要返回时间作为结果,则需要使用{{的.toString.toUTCString方法1}}对象。