我需要将时间(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 格式。
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()
。
只是另一种普通的旧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>
不太确定您要做什么,但是有几个简单的函数可能会有所帮助,一个用于将h:m:s转换为秒,另一个用于将秒转换为h:m:s。
例如
// 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