JavaScript
Node.js

Node.jsで明日を取得 (date-utils)

moment.jsではなくこちら(date-utils)を使ってみたメモです。

ちなみに↓で後述する内容の通り、あまり見ない書き方で戸惑ったのでメモっておこうと思った感じです。

誤解の無いように最初に書いておくと普通はMoment.js使うのがいいと思います。(くどいけど最後にも書いた)


準備

$ npm i date-utlis

これでOK。ちなみに環境はNode.js v12.2.0です。


Node.jsで明日


app.js

'use strict';

require('date-utils');
let tomorrow = Date.tomorrow();
console.log(tomorrow);


このコードを見ると分かりますが、requireするだけっていう使い方がNode.jsだとあんまり見ない気がしますね。

requireするともともとのDateオブジェクトが拡張される模様。

moment.jsで明日を取得だと、moment.add('days',1)こんな雰囲気なので、この書き方よりはtomorrow()は直感的に明日ってのが分かって分かりやすいですね。


Node.jsで昨日


app.js

'use strict';

require('date-utils');
let yesterday = Date.yesterday();
console.log(yesterday);


ちなみに昨日だとこんな感じ。これも直感的。


現在時刻


app.js

'use strict';

require('date-utils');

let nowFormatted = new Date().toFormat("YYYY年MM月DD日 HH24時MI分SS秒");
console.log(nowFormatted);



その他

こんな感じ感じの関数が使える模様です。

{

today: [Function],
UTCtoday: [Function],
tomorrow: [Function],
UTCtomorrow: [Function],
yesterday: [Function],
UTCyesterday: [Function],
validateDay: [Function],
validateYear: [Function],
validateSecond: [Function],
validateMonth: [Function],
validateMinute: [Function],
validateMillisecond: [Function],
validateHour: [Function],
compare: [Function],
equals: [Function],
equalsDay: [Function],
getDayNumberFromName: [Function],
getMonthNumberFromName: [Function],
getMonthNameFromNumber: [Function],
getMonthAbbrFromNumber: [Function],
isLeapYear: [Function],
getDaysInMonth: [Function]
}


所感

簡単な使い方ならこれで良さそう。でも計算とかしようとするとMoment.jsの方がよさげな印象ですね。

ちなみに、昔書いた記事(Node.jsで現在時刻を取得)を見つけたんですけど、こちらでもdate-utilsを使ってた模様。

moment.jsを知らなかったのかなんなのかは謎です。

全然関係ないけど、明日を取得するのにメソッド名がtomorrow()じゃなくてgetTomorrow()とかにした方が明日を掴む的なノリでエモいのになぁと思ってしまった。

あまり見ない書き方になってるし既存のDateオブジェクトを拡張してる雰囲気が気持ち悪いみたいな声もありそう。

tomorrow()yesterday()は分かりやすいけどnextweek()とかは無さそうだったので、明日か昨日だけを取りたいときとかしか使い勝手はよく無いかもしれない。


結論(?)

特にこだわりなければMoment.js使った方がいいと思います。

あと最近はdayjsの方がmoment.jsより軽くていいよって話題もありましたね。