Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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より軽くていいよって話題もありましたね。

n0bisuke
プロトタイピング専門スクール「プロトアウトスタジオ」で教えたりしてます。 プロフ -> https://dotstud.io/members/n0bisuke
https://protoout.studio
dotstudio
全ての人がモノづくりを楽しむ世界を目指して活動しています。
https://dotstud.io
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away