LoginSignup
1
1

More than 1 year has passed since last update.

JSONataの$moment関数で日付を取得する

Last updated at Posted at 2022-12-04

この記事は Node-RED Advent Calendar 2022 の 5 日目の記事です。

はじめに

Node-REDで日付を扱う方法は色々あると思いますが、JSONataで日付を取得したりするのが簡単だなと感じています。これまでは$fromMillis()などの関数を使うことが多かったのですが、今回ご紹介する方法は、JSONataの$monent()という関数を使う方法です。

image.png

JSONata式の書き方

月初と月末の日時を取得する

サンプルをご紹介します。
例えば、Injectをクリックした当月の初日と月末日を取得したいとします。

取得したい日付の例
2022-12-01T00:00:00
2022-12-31T23:59:59

この場合のJSONata式は$moment().startOf('month')$moment().endOf('month')を使います。.format()を使うと好きな日付のフォーマットに変更できます。

JSONata式
$moment(payload)
.startOf('month')
.format("YYYY-MM-DDT00:00:00")

$moment(payload)
.endOf('month')
.format("YYYY-MM-DDT23:59:59")

先月の日付

.add()を使えば日付の加算や減算も簡単です。例えば先月の日付が欲しいときは以下の様にします。

JSONata式
$moment().add(1, 'months')

来年1月の日付が返ってきました。

結果
Tue Jan 03 2023 11:30:10 GMT+0900

昨年の日付

昨年の日付が欲しければ、'years'とするだけです。

JSONata式
$moment().add(-1, 'years')
結果
Fri Dec 03 2021 11:31:33 GMT+0900

この他の書き方

主な使い方は上記の通りですが、全部の書き方を調べ切れていません。
moment.jsのサイトを参考にしながら、いじってみると面白いと思います。

まとめ

今日は、Node-REDで日付を取得する時にJSONataの$moment関数を使う方法をご紹介しました。

Node-REDの日付の取扱方法については、過去にもいろいろな記事がありました。

昨年のアドベントカレンダーでもこんな記事もありました。

いずれの記事でもJSONataについては

$fromMillis()

$toMillis()

を使っています。

今回は、Node-REDにおける日付問題についての焼き直しの内容になりますが、今回見つけた$moment()による方法を使ってみるとより簡単で書きやすくなるのではと思いましたので、ご紹介致しました。

今回のNode-REDのフローはenebularのDiscoverで公開しております。

ご参考になれば幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1