私と同様の要件があります:HH:MM:SS形式の時間を秒のみに変換しますか?
しかしJavaScriptで。秒をさまざまな形式に変換する多くの例を見ましたが、HH:MM:SSを秒に変換していません。任意の助けいただければ幸いです。
私と同様の要件があります:HH:MM:SS形式の時間を秒のみに変換しますか?
しかしJavaScriptで。秒をさまざまな形式に変換する多くの例を見ましたが、HH:MM:SSを秒に変換していません。任意の助けいただければ幸いです。
DD
ではHH:MM:DD
?
回答:
これを試して:
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);
String.prototype.toSeconds = function () { if (!this) return null; var hms = this.split(':'); return (+hms[0]) * 60 * 60 + (+hms[1]) * 60 + (+hms[2] || 0); }
注:|| 0
末尾のはこのコードの実装に適しています-HH:MMの(まだ有効な)時間表現の問題を防ぎます(Chromeのtype = "time"入力は、seconds = 0のときにこの形式で出力されます)。
hh:mm
ないseconds
私は変更する必要がどのようなこのケースでは..?
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
tovar seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60;
この関数は、「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));
HH:MM:SS
を適切に処理しMM:SS
ますが、受け入れられた回答は処理しません。
'03'.split(':').reduce((acc,time) => (60 * acc) + +time, 0);
予期しない文字列を返すため失敗する:'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
文字列を1行で秒に変換します。また、許可されるh:m:s
形式とmm:ss
、m:s
など
'08:45:20'.split(':').reverse().reduce((prev, curr, i) => prev + curr*Math.pow(60, i), 0)
hh:mm:ss
文字列を1行で秒に変換します。また、許可されるh:m:s
形式とmm:ss
、m:s
など
reverse()
:'00:01:11'.split( ':')。reduce((val、entry、i)=> val + entry *(3600 / Math.pow(60、i))、0 )=== 71
mm:ss
正しく機能しません。
試す
time="12:12:12";
tt=time.split(":");
sec=tt[0]*3600+tt[1]*60+tt[2]*1;
ここに、最初に承認された回答について、もう少し読みやすいフォームがあります。
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を実装する必要があります
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>