簡體   English   中英

僅在javascript中將HH:MM:SS字符串轉換為秒

[英]Convert HH:MM:SS string to seconds only in javascript

我有類似的要求: Convert time in HH:MM:SS format to seconds only?

但在 javascript 中。 我見過許多將秒轉換為不同格式的示例,但沒有將 HH:MM:SS 轉換為秒。 任何幫助,將不勝感激。

試試這個:

var hms = '02:04:33';   // your input string
var a = hms.split(':'); // split it at the colons

// minutes are worth 60 seconds. Hours are worth 60 minutes.
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 

console.log(seconds);

此函數處理“HH:MM:SS”以及“MM:SS”或“SS”。

function hmsToSecondsOnly(str) {
    var p = str.split(':'),
        s = 0, m = 1;

    while (p.length > 0) {
        s += m * parseInt(p.pop(), 10);
        m *= 60;
    }

    return s;
}

這可以通過以下方式非常靈活地完成:

'01:02:03'.split(':').reduce((acc,time) => (60 * acc) + +time);

這是因為小時、分鍾和秒內的每個時間單位都比較小的單位大 60 的倍數。 時間分為小時、分鍾和秒部分,然后通過使用較高單位的累積值乘以 60 來減少到秒,因為它經過每個單位。

+time用於將時間轉換為數字。

它基本上最終會做: (60 * ((60 * HHHH) + MM)) + SS

如果只傳遞了幾秒鍾,那么結果將是一個字符串,因此為了解決這個問題,我們可以將整個結果轉換為 int:

+('03'.split(':').reduce((acc,time) => (60 * acc) + +time));

由於 Date 對象的getTime函數獲取自 1970/01/01 以來的毫秒數,我們可以這樣做:

var time = '12:23:00';
var seconds = new Date('1970-01-01T' + time + 'Z').getTime() / 1000;

在一行中將hh:mm:ss字符串轉換為秒。 還允許h:m:s格式和mm:ss , m:s

'08:45:20'.split(':').reverse().reduce((prev, curr, i) => prev + curr*Math.pow(60, i), 0)

嘗試

time="12:12:12";
tt=time.split(":");
sec=tt[0]*3600+tt[1]*60+tt[2]*1;

Javascript 的靜態方法Date.UTC()可以解決問題:

alert(getSeconds('00:22:17'));

function getSeconds(time)
{
    var ts = time.split(':');
    return Date.UTC(1970, 0, 1, ts[0], ts[1], ts[2]) / 1000;
}

在原始批准的答案上,這可能是更具可讀性的表格。

const getSeconds = (hms: string) : number => {
  const [hours, minutes, seconds] = hms.split(':');
  return (+hours) * 60 * 60 + (+minutes) * 60 + (+seconds);
};
new Date(moment('23:04:33', "HH:mm")).getTime()

輸出: 1499755980000(以毫秒為單位)(1499755980000/1000)(以秒為單位)

注意:此輸出計算從 1970-01-01 12:0:0 到現在的差異,我們需要實現 moment.js

這是最清晰、易於理解的解決方案:

 function convertDurationtoSeconds(duration){ const [hours, minutes, seconds] = duration.split(':'); return Number(hours) * 60 * 60 + Number(minutes) * 60 + Number(seconds); }; const input = '01:30:45'; const output = convertDurationtoSeconds(input); console.log(`${input} is ${output} in seconds`);

此功能也適用於 MM:SS:

 const convertTime = (hms) => { if (hms.length <3){ return hms } else if (hms.length <6){ const a = hms.split(':') return hms = (+a[0]) * 60 + (+a[1]) } else { const a = hms.split(':') return hms = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]) } }

取自 Paul https://stackoverflow.com/a/45292588/1191101給出的解決方案,但使用舊的函數表示法,因此它也可以用於其他 js 引擎(例如 java Rhino)

function strToSeconds (stime)
{
   return +(stime.split(':').reduce(function (acc,time) { return +(60 * acc) + +time }));
}

或者只是這個更具可讀性

function strToSeconds (stime)
{
  var tt = stime.split(':').reverse ();
  return ((tt.length >= 3) ? (+tt[2]): 0)*60*60 + 
         ((tt.length >= 2) ? (+tt[1]): 0)*60 + 
         ((tt.length >= 1) ? (+tt[0]): 0);
}

 function parsehhmmsst(arg) { var result = 0, arr = arg.split(':') if (arr[0] < 12) { result = arr[0] * 3600 // hours } result += arr[1] * 60 // minutes result += parseInt(arr[2]) // seconds if (arg.indexOf('P') > -1) { // 8:00 PM > 8:00 AM result += 43200 } return result } $('body').append(parsehhmmsst('12:00:00 AM') + '<br>') $('body').append(parsehhmmsst('1:00:00 AM') + '<br>') $('body').append(parsehhmmsst('2:00:00 AM') + '<br>') $('body').append(parsehhmmsst('3:00:00 AM') + '<br>') $('body').append(parsehhmmsst('4:00:00 AM') + '<br>') $('body').append(parsehhmmsst('5:00:00 AM') + '<br>') $('body').append(parsehhmmsst('6:00:00 AM') + '<br>') $('body').append(parsehhmmsst('7:00:00 AM') + '<br>') $('body').append(parsehhmmsst('8:00:00 AM') + '<br>') $('body').append(parsehhmmsst('9:00:00 AM') + '<br>') $('body').append(parsehhmmsst('10:00:00 AM') + '<br>') $('body').append(parsehhmmsst('11:00:00 AM') + '<br>') $('body').append(parsehhmmsst('12:00:00 PM') + '<br>') $('body').append(parsehhmmsst('1:00:00 PM') + '<br>') $('body').append(parsehhmmsst('2:00:00 PM') + '<br>') $('body').append(parsehhmmsst('3:00:00 PM') + '<br>') $('body').append(parsehhmmsst('4:00:00 PM') + '<br>') $('body').append(parsehhmmsst('5:00:00 PM') + '<br>') $('body').append(parsehhmmsst('6:00:00 PM') + '<br>') $('body').append(parsehhmmsst('7:00:00 PM') + '<br>') $('body').append(parsehhmmsst('8:00:00 PM') + '<br>') $('body').append(parsehhmmsst('9:00:00 PM') + '<br>') $('body').append(parsehhmmsst('10:00:00 PM') + '<br>') $('body').append(parsehhmmsst('11:00:00 PM') + '<br>')
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

您可以動態執行此操作 - 以防您不僅遇到:HH:mm:ss,還遇到 mm:ss,甚至單獨遇到 ss。

var str = '12:99:07';
var times = str.split(":");
times.reverse();
var x = times.length, y = 0, z;
for (var i = 0; i < x; i++) {
    z = times[i] * Math.pow(60, i);
    y += z;
}
console.log(y);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM