2011-04-24 52 views
2

我發現了很多插件,例如this這種功能的插件,但我一直沒有找到能夠轉換時間間隔的字符串(「 2分鐘「,」10秒「,」1小時和4分鐘「等)以秒爲單位的時間。Javascript:轉換一個字符串,即。 「1小時2分鐘」以秒爲單位的時間

你知道的任何想法或插件?謝謝。

+0

你問一些像PHP的strtotime()函數? – 2011-04-24 17:56:12

+0

格式是自由形式還是有可能的格式的集合列表? – 2011-04-24 18:10:15

+0

你不能自己創建這個功能嗎?我的意思是,這很容易做到。 – mattsven 2011-04-24 18:12:02

回答

0

一旦您決定了格式,您需要編寫一個腳本,將您的時間格式轉換爲標準格式,或者只是從格式中提取基本數字。

之後,你可以使用日期構造解析的日期,然後寫從的getTime()方法得到秒

var d=new Date("October 12, 1987 10:23:00"); 
document.write(d.getTime() + " milliseconds since 1970/01/01"); 
2

我會寫反覆匹配「(digit+) (timeUnit)」並執行功能以毫秒爲單位的算術,因爲它們是更常見的單位。事情是這樣的:

var timespanMillis = (function() { 
    var tMillis = { 
    second: 1000, 
    min: 60 * 1000, 
    minute: 60 * 1000, 
    hour: 60 * 60 * 1000 // etc. 
    }; 
    return function(s) { 
    var regex = /(\d+)\s*(second|min|minute|hour)/g, ms=0, m, x; 
    while (m = regex(s)) { 
     x = Number(m[1]) * (tMillis[m[2]]||0); 
     ms += x; 
    } 
    return x ? ms : NaN; 
    }; 
})(); 

timespanMillis("2 mins"); // => 120000 
timespanMillis("10 seconds"); // => 10000 
timespanMillis("1 hour and 4 minutes"); // => 3840000 
timespanMillis("Foobar"); // => NaN 

關鍵是要保持tMillis查找對象同步與正則表達式,但它不應該太硬;例如,您可以通過將tMillis的屬性作爲源字符串來構造正則表達式。

相關問題