web-dev-qa-db-ja.com

JavaScriptでのみHH:MM:SS文字列を秒に変換します

これと同様の要件があります: HH:MM:SS形式の時間を秒のみに変換しますか?

しかし、javascriptで。秒を異なる形式に変換する多くの例を見てきましたが、HH:MM:SSを秒に変換することはありません。任意の助けをいただければ幸いです。

72
Sri Reddy

これを試して:

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);
154
Dagg Nabbit

この関数は、「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;
}
56
Niko

これは、次の方法で非常に弾力的に行うことができます。

'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));
27
Paul

hh:mm:ss文字列を1行で秒に変換します。 h:m:s形式とmm:ssm:sなども許可されています

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

Dateオブジェクトの getTime 関数は1970/01/01以降のミリ秒を取得するため、これを行うことができます。

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

試してみる

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

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;
}
5
Chronozoa
new Date(moment('23:04:33', "HH:mm")).getTime()

出力: 1499755980000(ミリ秒)(1499755980000/1000)(秒)

注:この出力は、1970-01-01 12:0:0から現在までの差分を計算し、moment.jsを実装する必要があります

2
ITsDEv

この関数は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])
        }
      }
1
Philip Tran
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>
0
Phillip Senn

これは動的に行うことができます-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);
0
Jeffz