2014-09-04 296 views
0

我想時間字符串這是HHMM格式轉換HH:MM格式,例如轉換時間字符串從HHMM到HH:MM格式以JavaScript

「230」將成爲「2:30」

「400」 將成爲 「4:00」

我做了以下

var timeString = "200"; 

var finalString = "" 
      + (((parseInt(timeString)) 
      - ((parseInt(timeString))%100))/100) 
      + ":" 
      + ((parseInt(timeString)%100)? (parseInt(timeString)%100) :"00"); 

它的工作原理,但有沒有更好的辦法?

編輯:

1)如果 「400」 應該轉換什麼 「04:00」?

+1

比使用其他庫(如真棒[moment.js(http://momentjs.com/))解決方案是非常穩固。但是,我會在計算最終字符串之前將'timestring'轉換爲一個整數,而不是每次需要時調用'parseInt'。 – yuvi 2014-09-04 08:10:24

+1

您正在談論性能,可讀性或LOC的「更好」嗎? – fcalderan 2014-09-04 08:11:25

回答

2

我建議你使用moment.js庫。然後,例如你可以使用如下代碼:

moment("1230","HHmm").format("HH:mm"); 
+0

我正在嘗試不使用任何js庫。 – ahujamoh 2014-09-04 10:04:28

0

所以只是串並添加點,簡單的方法是最好的:

var myTimeStr = '400', 
    hours = myTimeStr.substring(0, myTimeStr.length-2), 
    mins = myTimeStr.substring(myTimeStr.length-2), 
    res = hours + ':' + mins; 
0

你可以縮短你的JavaScript代碼,而無需任何外部的lib,只是「香草JS」

var myTimeStr = '400'; 
var dt = myTimeStr.match(/(\d{1,2})(\d{2})/); 
console.log([dt[1], dt[2]].join(':')); // 4:00 
0

使用字符串切片(),你可以做這樣的:

var str = "1230"; 
var len = str.length; 
var res = str.slice(0,len-2) + ":" + str.slice(len-2); 
0

你可以試試這個

var finalString = [timeString.slice(0, timeString.length - 2), ':', timeString.slice(timeString.length - 2)].join(''); 
相關問題