Web屋さんのアレ

Python大好きなWeb屋のおじさんがぺろぺろ何かを書いてくよ。

【JavaScript】時間と秒の相互変換【Mootools】

Mootools大好きっ子(jQuery大嫌いっ子)の僕だよ!

JSってなんか時間まわりの使い勝手がイマイチな気がするのです。
PHPが使いやすいってだけなのかもしれませんけども。。

という訳でお題の通り「時間と秒の相互変換」を行う関数を書きました。
普通に関数書くのじゃつまらないので、StringクラスとNumberクラスに盛り込んでみましたとさ。

Number.implement({
secToTime: function(hour) {
if (arguments.length == 0) hour = true;

var sec = this.toFloat();

if (hour) {
var hours = ("0" + Math.floor(sec / 3600).toString()).slice(-2);
var minutes = ("0" + Math.floor(sec % 3600 / 60).toString()).slice(-2);
var seconds = ("0" + Math.floor(sec % 60).toString()).slice(-2);
return hours + ':' + minutes + ':' + seconds;
} else {
var minutes = ("0" + Math.floor(sec / 60).toString()).slice(-2);
var seconds = ("0" + Math.floor(sec % 60).toString()).slice(-2);
return minutes + ':' + seconds;
}
}
})

String.implement({
timeToSec: function() {
var regexp = /^(?:(?:(\d+):)?(\d+):)?(\d+)$/;
var timeString = this.toString();
var matches = timeString.match(regexp);
if (matches == null) return false;

var sec = 0;
if (matches[1]) sec += matches[1].toInt() * 3600;
if (matches[2]) sec += matches[2].toInt() * 60;
sec += matches[3].toInt();

return sec;
},
secToTime: function(hour) {
if (arguments.length == 0) hour = true;
var sec = this.toInt();
return sec.secToTime(hour);
}
})

var sec1 = '60'.timeToSec();
var sec2 = '30:00'.timeToSec();
var sec3 = '01:00:00'.timeToSec();

console.log(sec1); // 60
console.log(sec2); // 1800
console.log(sec3); // 3600

var time1 = sec1.secToTime();
var time2 = sec2.secToTime();
var time3 = sec3.secToTime();

console.log(time1); // 00:01:00
console.log(time2); // 00:30:00
console.log(time3); // 01:00:00

time1 = sec1.secToTime(false);
time2 = sec2.secToTime(false);
time3 = sec3.secToTime(false);

console.log(time1); // 01:00
console.log(time2); // 30:00
console.log(time3); // 60:00

あんまりテストしてないけど、多分大丈夫◎