在havascript

时间:2015-06-21 20:11:24

标签: javascript datetime

我需要将时间(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格式。

3 个答案:

答案 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;
&#13;
&#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