【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
あんまりテストしてないけど、多分大丈夫◎
0 コメント:
コメントを投稿