2011-04-24 54 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的属性作为源字符串来构造正则表达式。

相关问题