Javascript:转换一个字符串,即。 “1小时2分钟”以秒为单位的时间
问题描述:
我发现了很多插件,例如this这种功能的插件,但我一直没有找到能够转换时间间隔的字符串(“ 2分钟“,”10秒“,”1小时和4分钟“等)以秒为单位的时间。Javascript:转换一个字符串,即。 “1小时2分钟”以秒为单位的时间
你知道的任何想法或插件?谢谢。
答
一旦您决定了格式,您需要编写一个脚本,将您的时间格式转换为标准格式,或者只是从格式中提取基本数字。
之后,你可以使用日期构造解析的日期,然后写从的getTime()方法得到秒
var d=new Date("October 12, 1987 10:23:00");
document.write(d.getTime() + " milliseconds since 1970/01/01");
答
我会写反复匹配“(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的属性作为源字符串来构造正则表达式。
你问一些像PHP的strtotime()函数? – 2011-04-24 17:56:12
格式是*形式还是有可能的格式的集合列表? – 2011-04-24 18:10:15
你不能自己创建这个功能吗?我的意思是,这很容易做到。 – mattsven 2011-04-24 18:12:02