Node-RED で AirTable に日時データを登録するときにタイムゾーンを合わせるメモ

Node-RED で AirTable に日時データを登録するときにタイムゾーンを合わせるメモです。

自分の WordPress の functions.php で投稿時通知する簡易 Webhook 対応をするメモ

こちらのデータを Node-RED で一旦受け止めてから情報を付与して AirTable に記録しようとしたときに、フィールドタイプを Date にしているところで時間がズレてしまう現象に出会ったので、原因を調べて修正してみました。

AirTable の内容

状況を切り出してみます。

まず、このようなテーブルがあり DateTime という名前でフィールドタイプを Date にして時間も加えたものがあります。

image

Node-RED から日時を入れてみるとズレる

image

AirTable ノードを使って、このようなフローを作ります。

image

「データ作成」と書いてある change ノードではこのようにデータがあります。

image

これを実行して、DateTime フィールドに 2021/7/27 13:00 と日時データを入れても時間がズレてしまいます。

ISO フォーマット に直してみる

Formulas and date fields を見ていると、どうもフィールドタイプを Date にしているところは ISO フォーマットに対応しているようです。

たしかに、先ほどのズレも 13:00 が 22:00 になっていて、ちょうど 9 時間ズレていることを考えると、時差が反映されていないようです。

image

ということで、送るデータを ISO フォーマットに合わせて時差を追加した 2021-07-27T13:00:00+09:00 に変えて送ってみます。

image

ちゃんと意図通りの時間で反映されました!ということで、AirTable にフィールドタイプを Date にしているところに日時データを登録するときは、ISO フォーマットに合わせた日時の日付で登録すればよいということが分かりました~!

[{"id":"6d713bfd.34db04","type":"airtable out","z":"e5e81c97.443ca","airtable":"73e2413d.dd9d7","operation":"create","outputType":"multiple","table":"DateTime","name":"","x":620,"y":400,"wires":[["d9b67831.f8acc8"]]},{"id":"da7b23b9.105be","type":"inject","z":"e5e81c97.443ca","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":190,"y":400,"wires":[["dcd42011.71bb9"]]},{"id":"d9b67831.f8acc8","type":"debug","z":"e5e81c97.443ca","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":860,"y":400,"wires":[]},{"id":"dcd42011.71bb9","type":"change","z":"e5e81c97.443ca","name":"データ作成","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"Name\":\"CurrentAddData1\",\"DateTime\":\"2021-07-27T13:00:00+09:00\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":400,"wires":[["6d713bfd.34db04"]]},{"id":"73e2413d.dd9d7","type":"airtable","name":"ScrapBox Base"}]

こちらのフローのJSON データも置いておきます。