我需要将时间(hh:mm:ss)除以整数。例如13:14:24
/ 12
。
如果我把它转换成日期并除以:
new Date( date.getMonth()+1 + " " +
date.getDate() + ", " +
date.getFullYear() + " " +
"13:14:24") / 12;
我得到一个非常长的数字119579922000
,它是以毫秒为单位的日期/ 12吗?我需要结果是相同的hh:mm:ss格式。
答案 0 :(得分:5)
var h = 13, m = 14, s = 24;
var secsSinceMidnight = (h*3600) + (m*60) + s;
var oneTwelth = secsSinceMidnight / 12;
h = Math.floor(oneTwelth / 3600);
m = Math.floor( (oneTwelth % 3600) / 60);
s = Math.floor( (oneTwelth % 3600) % 60);
console.log(h + ":" + m + ":" + s);
以下是使用Sugar.js库的替代方法,这是我在JavaScript中日期处理的个人选择扩展:
var midnight = Date.create().beginningOfDay();
var secsSinceMidnight = Date.create().secondsSince(midnight);
console.log( (secsSinceMidnight/12).secondsAfter(midnight) );
解释最后一行:secondsAfter
是在Number
类型上定义的函数。它返回一个Date
对象,然后发送到console.log()
。
答案 1 :(得分:1)
只是另一个普通的javascript替代方案,但在一行代码中完成。
return (new Date((date - date.getTimezoneOffset() * 60000) % 86400000 / divisor )).toUTCString().split(' ')[4];
当数学以UTC为单位时,它按时区(分钟)进行调整。接下来用除数除以模数(86400000毫秒= 1天)。返回格式化的时间字符串。
工作示例:
function getTimeSlice( date, divisor ) {
return (new Date((date - date.getTimezoneOffset() * 60000) % 86400000 / divisor )).toUTCString().split(' ')[4];
}
// Test
var test = new Date( );
test.setHours(13, 14, 24, 0);
stdout.innerHTML = getTimeSlice( test, 12);

<div id="stdout"></div>
&#13;
答案 2 :(得分:0)
不太确定你要做什么,但它可能有一些简单的功能,一个用于将h:m:s转换为秒,一个用于将秒转换为h:m:s。 / p>
E.g。
// Convert H:M:S to seconds
// Seconds are optional (i.e. n:n is treated as h:s)
function hmsToSeconds(s) {
var b = s.split(':');
return b[0]*3600 + b[1]*60 + (+b[2] || 0);
}
// Convert seconds to hh:mm:ss
function secondsToHMS(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 |0);
}
所以如果你想把时间除以12,那么:
console.log(secondsToHMS(hmsToSeconds('13:14:24')/12)); // 01:06:12