我有一個像下面計數持續時間
%snd: <00:00:00><00:02:20>
%snd: <00:02:45><00:05:18>
%snd: <00:05:49><00:09:84>
我想指望這兩個標記之間的時間間隔在每一行,並顯示所有的時間差的總和的字符串在幾分鐘內。我是否必須將它們轉換成適當的JavaScript時間對象,還是有其他直接的方法可以做到這一點?
任何幫助或暗示將高度appreciated.Thank您
我有一個像下面計數持續時間
%snd: <00:00:00><00:02:20>
%snd: <00:02:45><00:05:18>
%snd: <00:05:49><00:09:84>
我想指望這兩個標記之間的時間間隔在每一行,並顯示所有的時間差的總和的字符串在幾分鐘內。我是否必須將它們轉換成適當的JavaScript時間對象,還是有其他直接的方法可以做到這一點?
任何幫助或暗示將高度appreciated.Thank您
如果你的格式是<minutes:seconds:milliseconds>
然後把這個字符串內<>標記該功能,它會給你時間,你分鐘。然後可以將你的更多的邏輯。
function timeToMinutes(time) {
time = time.split(/:/);
return time[0] + (time[1]/60) + time[2]/(60*100);
}
這段代碼無法正常工作,它應該返回'time [0] * 3600 + time [1] * 60 + + time [2]'來返回秒數。 – RobG
我覺得完全避免日期會更簡單。將時間轉換爲一個公分母,例如秒,在秒上做任何你想要的數學運算,然後在最後轉換回時間。
/* Convert a string in h:mm:ss format to seconds
** @param {string} s - string in hh:mm:ss format
** @returns {number} - time converted to seconds
*/
function parseTime(s) {
var b = s.split(/\D/);
return b[0]*3600 + b[1]*60 + +b[2];
}
/* Convert a time in seconds to hh:mm:ss format
** @param {number} secs - seconds to convert
** @returns {string} - time in hh:mm:ss format
*/
function secondsToTime(secs) {
function z(n){return (n<10?'0':'')+n}
var sign = secs < 0? '-' : '';
secs = Math.abs(secs);
return sign + z(secs/3600 | 0) + ':' +
z(secs % 3600/60 | 0) + ':' +
z(secs % 60);
}
// Get time difference between 00:02:45 and 00:05:18
var diffInSeconds = parseTime('00:05:18') - parseTime('00:02:45');
console.log(secondsToTime(diffInSeconds))
// Deal with -ve difference between 00:05:18 and 00:02:45
var diffInSeconds = parseTime('00:02:45') - parseTime('00:05:18');
console.log(secondsToTime(diffInSeconds))
// Process a time pair (noting that 84 is likely an invalid value but is allowed)
var diff = '<00:05:49><00:09:84>'.match(/\d\d:\d\d:\d\d/g).reduce((a,b)=>secondsToTime(parseTime(b) - parseTime(a)));
console.log(diff);
你是否應該?這是你的電話。你可能相對容易地做數學運算,或者你可以讓Date對象爲你處理它。 –
您可以分別找到第二個,第三個分鐘和第二個小時(?)差異,然後將它們與* 60等相加。 – qxz
是 - 轉換爲Date對象並獲取差異。這比手動完成要容易得多。 – Archer