2013-02-08 41 views
0

我需要做最简单的事情,输入日期/时间并写出小时数:分钟:直到那个时间的秒数。我一直无法弄清楚。我甚至用Datejs这是伟大的尝试,但似乎并没有这种功能内置JavaScript时间直到

的时间将是在0分钟的范围内的某处 - >20分钟

谢谢!

+2

尝试[Moment.js](http://momentjs.com/)。另外,显示一些代码。 –

+0

非常感谢,我认为可能有这样一个图书馆......提交为答案也许? –

回答

3

不要打扰图书馆这么简单的事情。你必须知道的输入日期字符串的格式是否使用图书馆或没有,所以假设ISO8601(如2013-02-08T08:34:15Z),你可以这样做:

// Convert string in ISO8601 format to date object 
// e.g. 2013-02-08T02:40:00Z 
// 
function isoToObj(s) { 
    var b = s.split(/[-TZ:]/i); 

    return new Date(Date.UTC(b[0], --b[1], b[2], b[3], b[4], b[5])); 

} 


function timeToGo(s) { 

    // Utility to add leading zero 
    function z(n) { 
     return (n < 10? '0' : '') + n; 
    } 

    // Convert string to date object 
    var d = isoToObj(s); 
    var diff = d - new Date(); 

    // Allow for previous times 
    var sign = diff < 0? '-' : ''; 
    diff = Math.abs(diff); 

    // Get time components 
    var hours = diff/3.6e6 | 0; 
    var mins = diff%3.6e6/6e4 | 0; 
    var secs = Math.round(diff%6e4/1e3); 

    // Return formatted string 
    return sign + z(hours) + ':' + z(mins) + ':' + z(secs); 
} 

您可能需要使用将字符串转换为日期的函数,但不多。无论如何,您应该提供UTC时间字符串,除非您可以确定客户端的本地时间设置为提供的日期时间值的时区。

+0

这可能会奏效,但图书馆做我想要的任何东西,比如解析任何种类的日期字符串。虽然谢谢! –

+0

无论如何,您必须知道所提供的字符串的格式才能使用库,为特定格式编写您自己的解析器并不重要(可能是2或3行代码)。格式化输出也不困难,所以除非您有其他要求,否则我不会看到图书馆的要点。 – RobG