Panda Noir

JavaScript の限界を究めるブログでした。最近は幅広めに書いてます。

文字列からミリ秒を計算するライブラリtime-f作った

setIntervalの秒数指定の場面など、ミリ秒で指定する場面は多いです。これをもう少しリーダブルにかけると嬉しいですよね?そこで今回は「time-f」というライブラリを作りました。

インストール方法

$ yarn add time-f
$ npm i --save time-f

使い方

const time = require('time-f');
setInterval(f, time('5sec'));
setTimeout(f, time('5min 5sec'));

こんな感じでできます。リーダブルでいいですよね。

time()はその時間を表すミリ秒をNumberで返します。time()は3つまで数値を受け取れます。

time(5); // 5秒 = 5000
time(3, 0); // 3分 = 180000
time(1, 30, 0); // 1時間半 =5400000

また、秒、分、時間それぞれに個別の関数を用意しました。

time.sec(5); // 5秒
time.min(3); // 3分
time.hour(1); // 1時間

用途

jQueryの.animate()のduration指定に使ったり、 日付計算にも使えます。

$('#box').animate({'left': '100px'}, time('5sec'));

const today = new Date();
const tomorrow = new Date(today.getTime() + time('1day'));
const yesterday = new Date(today.getTime() - time('1day'));
const oneHourLater = new Date(today.getTime() + time('1hour'));
const oneAndAHalfHoursLater = new Date(today.getTime() + time('1h 30m'));

日付計算でこの記法ができるとかなり可読性が高いですよね?

既存のライブラリとの比較

timestringというライブラリが存在していたのですが、秒で返すことと、引数に数字を渡す形で使えませんでした。ミリ秒で返せるようですが、引数に一々"ms"を渡さなければならず面倒です。デフォルトでミリ秒を返してほしいですよね。