我有与此类似的要求:将HH:MM:SS格式的时间仅转换为秒?
但在javascript中。我已经看到了许多将秒转换为不同格式的示例,但没有将HH:MM:SS转换为秒的示例。任何帮助,将不胜感激。
我有与此类似的要求:将HH:MM:SS格式的时间仅转换为秒?
但在javascript中。我已经看到了许多将秒转换为不同格式的示例,但没有将HH:MM:SS转换为秒的示例。任何帮助,将不胜感激。
DD
中HH:MM:DD
?
Answers:
试试这个:
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的(仍然有效)时间表示形式出现问题(当seconds = 0时,Chrome type =“ time”输入将以这种格式输出)。
hh:mm
没有seconds
在这种情况下,我不得不修改..?
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
来var 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
在一行中将字符串转换为秒。还允许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
在一行中将字符串转换为秒。也让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>